Python 已准备好MySQL不工作的语句
我正在使用Python3和mysql连接器 我试图在db上运行Select语句,但准备好的语句出现问题: 这是执行查询的一段代码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,它就可以工作,但要使用准备好的语句
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,))