![](/img/trans.png)
[英]Python MySQL connector fails to return all results from SELECT query
[英]Python MySQL Connector database query with %s fails
我有一个基本程序,应该查询包含用户信息的数据库。 我正在尝试为特定用户选择信息,然后将其打印到控制台。
这是我的代码:
import mysql.connector
funcon = mysql.connector.connect(user='root', password='pass', host='127.0.0.1', database='fundata')
funcursor = funcon.cursor()
query = ("SELECT * FROM funtable WHERE userName=%s")
uName = 'user1'
funcursor.execute(query, uName)
for (userName) in funcursor:
print("{}".format(userName))
我将用户名存储在变量中,因为稍后我打算从tkinter输入框中获取用户名。 执行此代码时,出现以下错误:
mysql.connector.errors.ProgrammingError: 1064 (42000): 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
我曾尝试将%s放在查询中的引号中,但随后将按字面意义搜索用户名'%s',但不返回任何内容。 如何更改代码,以便仅查询该用户的数据库?
谢谢。
仅供参考:我正在使用python 3.3。
将您的funcursor.execute(query, uName)
调用更改为:
funcursor.execute(query, (uName, ))
execute
的第二个参数采用字符串列表/元组,而不是字符串。 上面的调用在传递要execute
的字符串之前创建了元组,因此不会引发任何错误。
execute
采用字符串列表/元组的原因是因为它事先不知道要满足查询需要多少个字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.