【发布时间】:2011-11-11 16:45:11
【问题描述】:
尝试通过 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")
【问题讨论】:
-
@JimGarrison:
%s语法是 MySQLdb 中参数化 SQL 的工作方式。特别要注意%s周围没有引号。请在 Google 上搜索 MySQLdb 文档,然后丢弃您的评论。 -
检查 _mysql 的源代码让我相信 C API 不使用准备好的语句,因此容易受到 SQL 注入的攻击。您似乎无法使用 Python MySQLDB API 来避免它。叹息……