Python使用sqllite3避坑--sqlite3.ProgrammingError: Incorrect number of bindings supplied错误

本文解析了在使用SQLite3时遇到的'Incorrectnumberofbindingssupplied'错误,主要针对预编译语句的执行。通过实例演示了问题的原因——未正确使用元组嵌套,以及如何修正。适合数据库新手提升技能。
摘要由CSDN通过智能技术生成

Incorrect number of bindings supplied错误

错误聚焦

一般出现在预编译的使用中
例如:

data = [[1, 2], [3, 4]]
connection.executemany('INSERT INTO table_name VALUES (?, ?, ?, ?)', data)

这样会出现这个错误

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 4, and there are 2 supplied.

错误原因及解决

让我们先看一下官方文档的演示1

# Larger example that inserts many records at a time
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
             ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
             ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
            ]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

可以看到,官方的是变量名 = [(), (), (), ()]这种形式,即列表里面套元组
那么问题原因就显而易见了,我们在data列表中虽然使用了嵌套,但没有使用元组,所以修改为以下形式即可。

data = [(1, 2, 3, 4)]

运行一下,成功写入
结果

总结

目前在数据库连接方面还有些不太熟练,争取多练习多找错误才会提升自己


  1. 官方文档为Python官方文档,Sqllite3可以去官网文档查看 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值