我正在尝试使用此处找到的提示从 python dict 创建 MySQL 插入。我收到 MySQL 错误,因为语法不正确。我发现问题是在我的查询中,字段名称用单引号括起来。我的代码是:
d=dict(a='pepe',b=4,c='potamo')
qmark = ", ".join(['%s'] * len(d))
sql = "INSERT INTO db.table ({}) VALUES ({})".format(qmark,qmark)
c.execute(sql,(d.keys() + d.values())
查看 mysql 日志,这会产生:
INSERT INTO db.table ('a', 'b', 'c') VALUES ('pepe', 4, 'potamo')
这会引发 mysql 异常(语法错误)。在 MySQL 命令行中使用该语句会产生相同的错误,并且手动从字段中删除单引号可以修复它:
INSERT INTO db.table (a,b,c) VALUES ('pepe',4,'potamo')
所以我想知道删除这些单引号的最佳方法是什么,或者是否有办法让cursor.execute()
(Mysqldb 的一部分)为我修复它。到目前为止,我只能想到类似的东西:
str(d.keys()).replace("'","") + str(d.values())
然后将生成的 str 拆分回列表以将其提供给cursor.execute()
. 或者创建一个
l=d.keys()
然后'
从列表的每个元素中删除
execute(sql,(l + d.values())
所有这些看起来都很难看。