首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的MySQL语法错误,但在MySQL外壳中工作

python中的MySQL语法错误,但在MySQL外壳中工作
EN

Stack Overflow用户
提问于 2013-07-21 20:16:10
回答 2查看 7.1K关注 0票数 2

我正在使用python中的MySQLdb

我有一个表,让索引有4个字段,其中一个是table1,它是主键,假设其他字段是field2,field3,field4。因为field2不是唯一的,所以这个字段有很多行的值都是相同的。

现在,当我查询select field3,field4 from table1 where field2=example时,我在's‘附近得到一个MySQL语法错误。此“%s”属于“select”。

为了调试它,我在运行时打印了查询,并将其粘贴到MySQL shell中,在那里它返回与where子句匹配的所有行。

下面是我实际的python代码

代码语言:javascript
复制
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")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-21 20:18:05

去掉反引号

代码语言:javascript
复制
query = "select field3,field4 from " + atable + " where field2 = %s"
cur.execute(query, (avalue,))
temp = cur.fetchall()
票数 4
EN

Stack Overflow用户

发布于 2013-07-21 21:38:17

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

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

代码语言:javascript
复制
query = "select field3,field4 from " + atable + " where field2 = %s"
cur.execute(query, (avalue,))
temp = cur.fetchall()

注意where子句的过去部分。在这里,SQL%s是一个字符串,因此正确的编写方法应该是:

代码语言:javascript
复制
query = "select field3,field4 from " + atable + " where field2 = '%s'"

请注意,%s已用单引号(')字符括起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17772229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档