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

Python中MySQL SELECT查询使用变量触发SQL语法错误的求助

搞定你的MySQL参数化查询语法错误

嘿,我马上就发现问题所在了!你的代码里有两个小细节没处理对,才导致了这个SQL语法错误,咱们一步步来修正:

问题1:参数传递的格式不对

MySQL Connector/Python 的 cursor.execute() 方法要求第二个参数必须是可迭代对象(比如元组、列表)——哪怕你只有一个参数,也不能直接传单个变量。你直接传Var1的话,驱动会把它当成字符序列拆分,导致%s没有被正确替换,进而触发SQL语法错误。

问题2:变量名大小写不匹配

Python是大小写敏感的,你定义的变量是var1,但执行查询时写的是Var1,这要么会导致变量未定义错误,要么会传递错误的值(如果Var1刚好存在的话)。


修正后的代码

var1 = "World"
selectQ = """SELECT name, score FROM score WHERE category = %s"""
# 用元组传递参数(逗号不能少,确保是单元素元组),同时修正变量名
cursor.execute(selectQ, (var1,))

为什么这样改?

  • 加个逗号写成(var1,)是Python定义单元素元组的标准方式,这样驱动程序会正确识别这是一个包含单个参数的集合,把%s替换为"World",还会自动处理字符串转义,避免SQL注入风险。
  • 修正变量名后,才能正确引用你之前定义的"World"值,不会出现变量找不到的问题。

这样修改后,你的查询应该就能正常执行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:52:41