想象一下,您有一個包含大量項目的鍵值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);
(好吧,它的確定有五個值,但想有用於例五數百個)。
有沒有用於有效和短弦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),)
可以有成千上萬的值,你仍然會被罰款與這一個INSERT語句。
請注意,將解碼Unicode字符串的條件,所以你不會有每個值之前的「u」字母。
那麼,有沒有更有效的和準備好的類或方法如何插入許多值與簡單的方法與短INSERT字符串?
如果您確實想要使用關係數據庫,可以使用即將推出的具有本機JSON數據類型的PostgreSQL 9.2。 – 2012-08-04 12:01:44