我正在尝试使用here中的提示从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())
所有人看起来都很难看。
答案 0 :(得分:0)
尝试这样的事情:
d=dict(a='pepe',b=4,c='potamo')
sql = "INSERT INTO db.table (a, b, c) VALUES (%(a)s,%(b)s,%(c)s)"
c.execute(sql, d)