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

pd.read_sql传列表执行IN查询报Not all parameters were used错误如何解决

问题排查与解决方案

报错根因

你使用的mysql-connector驱动的参数占位符规则不匹配,该驱动默认使用%s作为占位符,而非你代码中写的?,?是SQLite等其他数据库驱动的占位符格式,占位符不匹配导致驱动识别不到你传入的参数,触发参数未被使用的报错。

修复代码

直接修改占位符生成逻辑即可,修复后的代码如下:

tickerlist = ['AAPL US', 'GOOG US']

# 将占位符替换为mysql-connector支持的%s
placeholders = ','.join('%s' for _ in range(len(tickerlist)))
qry = 'SELECT * FROM table WHERE ticker IN (%s)' % placeholders
data = pd.read_sql(qry, connection, params=tickerlist)

可选排查项

如果修改后仍有报错,可以额外检查两点:

  • 不要混用不同数据库驱动的连接对象,不同驱动占位符规则不同,比如PostgreSQL的psycopg2用%s、Oracle驱动用:1类格式,需要和你使用的驱动对应
  • 确认你的查询语句中没有其他额外的占位符,所有需要传参的位置都和params中的参数数量匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:45:01