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

Python执行SQLite UPDATE语句报错:占位符与值数量不匹配

SQLite UPDATE语句报错的修复方案

你的代码存在三个关键问题,逐个解决就能搞定:

  • 缺少SQL核心关键字:UPDATE语句必须用SET指定要更新的列,你的代码里漏了这个关键字,这是语法层面的错误。
  • 占位符被错误转义:你给?加了单引号,数据库会把'?'当成普通字符串字面量,根本不会识别为参数占位符,导致系统检测到占位符数量(0个)远少于传入的参数数量(4个),触发报错。
  • 参数传递格式不规范:sqlite3执行带参数的SQL时,参数最好打包成元组形式传递,避免解析异常。

修正后的可运行代码

db.execute("UPDATE birthdays SET name = ?, month = ?, day = ? WHERE id = ?", (name, month, day, id))

错误代码对比说明

原错误代码:

db.execute("UPDATE birthdays name = '?', month = '?', day = '?' WHERE id = '?'", name, month, day, id)
  1. 补上SET关键字,符合SQL UPDATE的标准语法结构
  2. 移除占位符?周围的单引号,让数据库正确识别参数位置
  3. 将参数打包为元组(name, month, day, id),适配sqlite3的参数传递规则

另外你提到直接在SQLite中运行的语句能成功,大概率是你实际运行时补了SET关键字(标准SQL不允许省略),只是写出来的时候漏了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:15:57