我试图执行以下命令,设置“store”=“result”,代码列等于“代码”的行。Python的Mysql更新执行命令
cursor.execute("""UPDATE pjStores SET %s=%s WHERE code=%s""", (store, result, code))
我不断收到以下错误,但:
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1087'=1 WHERE code='Madness16'' at line 1")
如果该命令的变量是:
store=1087
result=1
code=Madness16
这是我第一次真正使用MySQL,所以我新对此。我一直在这条线上停留了2个小时,并且无法弄清楚我做错了什么。我试着在MySQL下面的命令,并将其正确运行:按要求
UPDATE pjStores SET `1087`=1 WHERE code='Madness16'
更多代码:
# Step through stores
cursor.execute("SHOW COLUMNS FROM pjStores")
stores = cursor.fetchall()
cursor.execute("SELECT code FROM pjStores")
codes = cursor.fetchall()
for store in stores[1:]: # Hack to skip first entry
pj.setStore(store[0])
for code in codes:
result = pj.checkCode(code[0])
cursor.execute ("""UPDATE pjStores SET %d=%s WHERE code=%s""", (store[0], result, code[0]))
这就像你有一个报价问题,如果你看看错误(='疯狂16“)它是真的吗? – 2012-03-24 04:13:49
为什么你使用整数字段名? 1087不应该是字段名称,而应该是ID。 这个问题可能是由字符串和整数混合造成的,但除非我们看到更多的代码,否则不能确定。 – Doa 2012-03-24 04:18:54
@JeremyD引号问题就在这篇文章中,实际的错误显示了两个单引号而不是双引号。我更新了文章,以便格式正确。 – xur17 2012-03-24 04:22:12