Представьте, что у вас есть словарь Python с ключевыми значениями (или список) с большим количеством элементов. Допустим, вы читаете большой JSON файл и хотите сохранить его содержимое в таблице MySQL с ключами как имена столбцов и значений в качестве самих значений.
Пример JSON:
"display_location": {
"city":"Bratislava",
"state_name":"Slovakia",
"country_iso3166":"SK",
"latitude":"48.20000076",
"longitude":"17.20000076",
}
Тогда довольно неэффективно написать SQL-вставку так:
INSERT INTO TABLE (city, state_name, country_iso3166, latitude, longitude) VALUES('%s','%s','%s','%s','%s')
% (Bratislava, Slovakia, SK, 48.20000076, 17.20000076);
(Ну, это нормально с пятью значениями, но представьте, что их, например, пять сотен).
Есть ли какой-либо класс/метод Python для эффективной и короткоструйной вставки SQL? Я написал этот фрагмент кода:
for key,value in list.iteritems():
value_type = type(value)
if value_type is unicode:
vars_to_sql.append(value.encode('ascii', 'ignore'))
keys_to_sql.append(key.encode('ascii', 'ignore'))
else:
vars_to_sql.append(value)
keys_to_sql.append(key)
keys_to_sql = ', '.join(keys_to_sql)
После этого вставка выглядит намного проще:
INSERT INTO conditions_bratislava(%s) VALUES %r" % (keys_to_sql, tuple(vars_to_sql),)
Здесь могут быть тысячи значений, и вы все равно будете в порядке с этим одним вложением.
Обратите внимание, что условие, которое будет декодировать строки Unicode, поэтому вы не будете иметь буквы "u" перед каждым значением.
Итак, есть ли более эффективный и подготовленный класс или метод, как вставлять многие значения в один и тот же простой подход с короткой строкой INSERT?