より大きい量の項目を持つキー値のPython辞書(またはリスト)があるとします。より大きいJSONファイルを読んでいるとします。そのファイルの内容をMySQLテーブルに格納したいとしましょう。Python辞書/リストをSQLデータベースに挿入する最も効果的な方法は何ですか?
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つの値を持つOKですが、たとえば5のためにそこにいると想像何百もあります)
効果的で短い文字列の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つのinsert文で罰金になります。
Unicode文字列をデコードする条件に注意してください。したがって、各値の前に "u"文字はありません。
したがって、短いINSERT文字列を使用して同じ単純な方法で多くの値を挿入する方法が、より効果的で準備されたクラスまたはメソッドですか?
リレーショナルデータベースを使用する場合は、ネイティブなJSONデータ型を持つPostgreSQL 9.2を使用してください。 –