想象一下,您有一个包含大量项目的键值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