Python 获取MySQL错误

Python 获取MySQL错误,python,mysql,Python,Mysql,试图通过Python运行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 y

试图通过Python运行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")

这条线应该对你有帮助


看起来您有太多的引号插入到。。。价值观其中…不是有效的SQL。不能将
WHERE
子句添加到
INSERT
语句中

我猜您希望更新
数据表中当前行的
checkup\u date
列,而不是插入新行。如果是这样的话,试试看

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

相反。

是一种Python方式,表示所有内容(包括换行符等)都是字符串值。谢谢。这就提出了一个新的问题:为什么我要包含执行简单SQL语句的换行符或内容。我调用的线程显示不需要使用占位符这看起来应该可以工作,但现在它告诉我inventory.data不存在。我有一个名为inventory的数据库和一个名为data的表-它应该可以工作!编程错误:(1146,“表'inventory.DATA'不存在”)@JimGarrison:MySQLdb中参数化SQL的工作方式是
%s
语法。特别是,请注意
%s
周围缺少引号。请在谷歌上搜索MySQLdb文档,然后扔掉你的评论。通过检查_mysql的源代码,我认为C API没有使用预先准备好的语句,因此容易受到SQL注入的攻击。使用Python MySQLDB API似乎无法避免这种情况。叹息。。。