You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python参数化MySQL查询报错ProgrammingError:问题定位与解决

问题分析与解决

问题根源

代码里的cursor.execute第二个参数(select)并不是元组——Python中单个元素的元组必须在末尾加逗号,否则括号只是普通分组符号,会被识别为变量本身而非序列类型。mysql-connector的参数化查询要求第二个参数是元组、列表这类序列,无法正确解析单独的变量,导致SQL语句里的%s未被替换,直接传入数据库引发语法错误。

修正代码

把参数部分改成带逗号的元组,或者用列表:

方案1:使用带逗号的元组

select = input("ENTER USER FOR PASS RECOVERY :  ")
cursor.execute("SELECT COUNT(*) FROM user_stat WHERE usr=(%s)", (select,))

方案2:使用列表

select = input("ENTER USER FOR PASS RECOVERY :  ")
cursor.execute("SELECT COUNT(*) FROM user_stat WHERE usr=(%s)", [select])

验证说明

修改后,驱动会正确将select变量的值替换到SQL的%s占位符位置,生成合法的SQL语句,避免语法错误。

内容的提问来源于stack exchange,提问作者REZA SAEEDI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:40:36