大量のアイテムを含むキーと値の 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);
(まあ、5 つの値で問題ありませんが、たとえば 500 の値があると想像してください。)
効果的で短い文字列のSQL挿入のためのPythonクラス/メソッドはありますか? 私はこのコードを書きました:
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),)
何千もの値が存在する可能性がありますが、この 1 つの挿入ステートメントで問題ありません。
Unicode 文字列をデコードする条件に注意してください。したがって、各値の前に「u」文字はありません。
それで、短い INSERT 文字列を使用した同じ単純なアプローチで多くの値を挿入する方法として、より効果的で準備されたクラスまたはメソッドはありますか?