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

Python使用sqlite3执行SQL时如何传参?自增列插入报错怎么解决

问题原因

  • 你的INSERT语句没有指定插入对应的列名,SQLite会默认要求传入建表顺序下所有列的参数,你的Animes表共有ID、Name、GenreID 3个列,你只传入了2个参数,参数数量不匹配触发报错。
  • 自增主键虽然无需手动赋值,但不明确指定插入列的情况下,SQLite不会自动跳过ID列做值生成。

解决方案

推荐使用指定插入列名的写法,明确排除需要自动生成的ID列,数据库会自动为自增主键赋值,代码修改如下:

name = "Boruto"
genreid = 1
# 明确指定插入的列是Name和GenreID,ID列由数据库自动生成
c.execute('''INSERT INTO Animes (Name, GenreID) VALUES(?,?)''',(name,genreid))
conn.commit()
conn.close()

如果需要省略列名,也可以给ID列传入NULL占位触发自增逻辑,写法如下:

c.execute('''INSERT INTO Animes VALUES(NULL, ?,?)''',(name,genreid))

注:更推荐第一种指定列名的写法,后续如果表结构新增列时也不会受影响,可读性和可维护性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:27:03