使用python dict创建MySQL插入

时间:2012-09-19 11:08:44

标签: mysql-python

我正在尝试使用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()) 

所有人看起来都很难看。

1 个答案:

答案 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)