错误聚焦
一般出现在预编译的使用中
例如:
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.
错误原因及解决
# 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)]
运行一下,成功写入
总结
目前在数据库连接方面还有些不太熟练,争取多练习多找错误才会提升自己