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)]

运行一下,成功写入

总结

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

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

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。