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

Python操作SQLite插入数据提示绑定数量不正确报错问题咨询

错误根因

抛出Incorrect number of bindings supplied. The current statement uses 1.错误的核心原因是传入SQL执行接口的参数格式不符合sqlite3模块的要求。
sqlite3的execute方法要求绑定的参数必须是序列类型(元组、列表均可),你在add_fecha方法中直接将字符串"19-2-2022"作为参数传入,Python会将字符串识别为可迭代对象,按单个字符拆分为9个独立参数(即"1"、"9"、"-"、"2"、"-"、"2"、"0"、"2"、"2"),但你的INSERT语句只预留了1个?占位符,参数和占位符数量不匹配就会触发报错。
你封装的run_query方法逻辑本身没有问题,默认参数设置为空元组的写法符合规范。

修复方案

将参数修改为单元素元组格式即可,注意Python中单元素元组必须在元素后追加逗号,否则括号会被识别为普通运算优先级符号,不会被判定为元组类型。
修改后的add_fecha方法代码如下:

def add_fecha(self):
    query = 'INSERT INTO base VALUES(NULL, ?)'
    # 字符串后追加逗号,声明为单元素元组
    parameters = ("19-2-2022",)
    self.run_query(query, parameters)
    self.get_fechas()
开发注意事项
  • 后续如果需要传入多个绑定参数,按占位符顺序将参数放入元组即可,例如2个占位符对应参数格式为(参数1, 参数2)
  • 不要通过字符串拼接的方式拼接SQL语句和参数,会存在严重的SQL注入风险,你当前使用?占位符传参的写法是安全的,仅需调整参数格式即可
  • 传入参数时如果使用列表类型也可以被正常识别,例如parameters = ["19-2-2022"]同样能正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:36:23