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

Python操作SQLite时出现“Incorrect number of bindings supplied”错误求助

问题原因

错误出在con.execute()的参数传递环节。sqlite3的execute()方法要求第二个参数必须是序列类型(比如元组、列表),但你直接传入了字符串'id123'——Python会把字符串当作字符序列处理,'id123'被拆成了['i','d','1','2','3']五个元素,和SQL语句里仅有的1个?占位符不匹配,因此抛出绑定数量错误。

修正方案

把字符串包装成元组(注意单元素元组必须加逗号,避免被识别成普通括号包裹的字符串):

import sqlite3

db_file = "test.db"
con = sqlite3.connect(db_file)

cur = con.cursor()
cur.execute('DROP TABLE IF EXISTS image')
cur.execute('''
    CREATE TABLE image(
        id INTEGER PRIMARY KEY,
        listing_id TEXT NOT NULL,
        url TEXT NOT NULL,
        image BLOB NOT NULL
    )''')
# 修正:将参数改为单元素元组
res = con.execute('''
    SELECT listing_id, url FROM image WHERE listing_id=?
    ''', ('id123',))

也可以用列表传递参数,效果一样:

res = con.execute('''
    SELECT listing_id, url FROM image WHERE listing_id=?
    ''', ['id123'])
注意事项
  • 无论SQL语句里有几个占位符,execute()的第二个参数都必须是序列类型,哪怕只有一个参数。
  • 单元素元组的逗号不能省略,否则('id123')会被Python解析成字符串'id123',依然会触发相同的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:21:16