想象一下,您有一个包含大量项目的键值 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);
(嗯,有五个值是可以的,但想象一下,例如有五百个。)
是否有任何用于有效和短字符串 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),)
可能有数千个值,您仍然可以使用这个插入语句。
请注意将解码 Unicode 字符串的条件,因此每个值之前不会有“u”字母。
那么,是否有任何更有效和准备好的类或方法如何使用短 INSERT 字符串以相同的简单方法插入许多值?