2011-11-11 66 views
1

试图通过Python运行MySQL脚本,它不断给我错误。这是我的MySQL:获取MySQL错误

c.execute("""INSERT into DATA(checkup_date) 
VALUES(%s) WHERE machine_name = %s 
""", (date, machine)) 

我在做什么错?

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 'WHERE machine_name = 'TL-D04'\nVALUES('2011-11-11')' at line 2") 
+2

粘贴错误,请 – Alfabravo

+1

@JimGarrison:'%s'语法是MySQLdb中参数化SQL的工作原理。尤其要注意'%s'周围缺少引号。请执行Google搜索MySQLdb文档,然后放弃您的评论。 –

+0

检查_mysql的源代码使我相信C API不使用预准备语句,因此容易受到SQL注入的影响。它似乎没有可以使用Python MySQLDB API来避免它。唉...... –

回答

3

INSERT INTO ... VALUES ... WHERE ...不是有效的SQL。您无法将WHERE子句添加到INSERT语句中。

我猜你想要更新checkup_date列当前在DATA表中的行,而不是插入一个新行。如果是这种情况,请尝试使用

UPDATE DATA SET checkup_date = %s WHERE machine_name = %s 

改为。

+0

这看起来应该起作用,但现在它告诉我inventory.data不存在。我有一个名为inventory的数据库,其中有一个名为data的表 - 它应该可以工作! –

+0

ProgrammingError:(1146,“表'inventory.DATA'不存在”) –

+0

没关系,这是因为DATA被封顶。 –