Python 已准备好MySQL不工作的语句

Python 已准备好MySQL不工作的语句,python,mysql,prepared-statement,Python,Mysql,Prepared Statement,我正在使用Python3和mysql连接器 我试图在db上运行Select语句,但准备好的语句出现问题: 这是执行查询的一段代码 cursor = cnx.cursor() name = 'Bob' query = ('SELECT author FROM bib WHERE author=%s') records = cursor.execute(query, name) 我尝试了不同的语法,但结果都一样。如果我尝试在查询字符串上插入Bob direct,它就可以工作,但要使用准备好的语句

我正在使用Python3和mysql连接器

我试图在db上运行Select语句,但准备好的语句出现问题: 这是执行查询的一段代码

cursor = cnx.cursor()

name = 'Bob'
query = ('SELECT author FROM bib WHERE author=%s')
records = cursor.execute(query, name)
我尝试了不同的语法,但结果都一样。如果我尝试在查询字符串上插入Bob direct,它就可以工作,但要使用准备好的语句

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
谢谢

正如评论中指出的那样,
params
参数必须是元组或字典:

iterator=cursor.execute(operation,params=None,multi=True)

此方法执行给定的数据库
操作
(查询或命令)。元组或字典
params
中的参数绑定到操作中的变量。使用
%s
%(名称)s
参数样式指定变量(即,使用
format
pyformat
样式)<如果
multi
True
,则code>execute()返回迭代器

事实上,这适用于任何模块:

参数可以作为序列或映射提供,并将绑定到操作中的变量

因此:


谢谢,@Wrikken,改为(名字)和worked@Wrikken:由于您没有将此作为答案发布,我将其扩展并将其转换为社区wiki答案。
records = cursor.execute(query, (name,))