使用%s的python mysql connector数据库查询失败

d7v8vwbk  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(306)

我有一个基本程序,应该是查询一个数据库,其中包含用户信息。我正在尝试为特定用户选择信息并将其打印到控制台。
这是我的密码:

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”,但没有返回任何结果。如何更改代码以便仅查询此用户的数据库?
谢谢您。
仅供参考:我使用的是python3.3。

6ss1mwsb

6ss1mwsb1#

改变你的想法 funcursor.execute(query, uName) 呼叫:

funcursor.execute(query, (uName, ))

第二个论点 execute 获取字符串的列表/元组,而不是字符串。上面的调用在将字符串传入到之前创建元组 execute ,因此不会抛出错误。
为什么 execute 获取字符串列表/元组是因为它事先不知道需要多少字符串才能满足您的查询。

相关问题