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

执行cursor.execute调用存储过程报错Params must be in a list, tuple, or Row如何解决

问题原因
  • 报错和SQL占位符格式无关,核心问题是传入cursor.execute()的第二个参数类型不符合要求:Python数据库API规范明确要求,执行SQL的参数哪怕只有1个,也必须封装为列表、元组或Row类型,你直接传入了单个整数12345,所以触发报错。
  • 你仅修改了占位符为%s,没有调整参数的传入格式,因此仍然返回相同错误。
解决方案

将单个参数封装为元组或列表即可,两种常用写法如下:

写法1:用元组封装参数

注意:单元素元组末尾必须加逗号,否则会被识别为普通括号包裹的数值,不会被判定为元组类型

StoredProc = """exec S_img @image_id =?"""
param = 12345
cursor.execute(StoredProc, (param,))

写法2:用列表封装参数

StoredProc = """exec S_img @image_id =?"""
param = 12345
cursor.execute(StoredProc, [param])

如果你的数据库驱动要求使用%s作为占位符,仅需替换SQL语句中的?为%s即可,参数封装规则不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:06:07