2

我在 python 中使用 MySQLdb

我有一个表让 table1 有 4 个字段一个是索引,它是 PRIMARY KEY,假设其他是 field2、field3、field4。由于 field2 不是唯一的,因此我有许多行与该字段的值相同。

现在,当我从 table1 where field2=example 查询 select field3,field4 时,在“s”附近出现 MySQL 语法错误。这个's'属于'select'。
为了调试它,我在运行时打印了查询并将其粘贴到 MySQL shell 中,它返回了与 where 子句匹配的所有行。

这是我的实际python代码

query = "select `field3`,`field4` from `" + atable + "` where `field2` = '"+avalue+"'"
cur.execute(query)
temp = cur.fetchall()



 Error:
_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 's' at line 1")
4

2 回答 2

4

删除反引号

query = "select field3,field4 from " + atable + " where field2 = %s"
cur.execute(query, (avalue,))
temp = cur.fetchall()
于 2013-07-21T12:18:05.410 回答
0

falsetru 的解决方案几乎是正确的——但是 SQL 查询存在一个小问题:

原始查询及相关代码如下所示:

query = "select field3,field4 from " + atable + " where field2 = %s"
cur.execute(query, (avalue,))
temp = cur.fetchall()

注意 where 子句的过去部分。在这里,您将%s作为字符串,因此编写 SQL 的正确方法是:

query = "select field3,field4 from " + atable + " where field2 = '%s'"

请注意,%s已包含在单引号 ( ' ) 字符中。

于 2013-07-21T13:38:17.090 回答