绑定数量与提供的值不匹配错误

0 投票
2 回答
2247 浏览
提问于 2025-04-16 19:54

我正在尝试使用Python中的win32com模块将一个Excel表格转换成sqlite3数据库。我的Excel表格有6列,所以我Python代码的一部分是:

for row in exceldata:
      c.execute('INSERT INTO exceltable1 VALUES(?,?,?,?,?,?)',row)
conn.commit()

但是Python给了我以下错误:

c.execute('INSERT INTO exceltable VALUES(?,?,?,?,?,?)',row)
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 6, and there are 5 supplied.

如果我尝试去掉一个问号再运行,错误就变成了:

c.execute('INSERT INTO exceltable1 VALUES(?,?,?,?,?)',row)
OperationalError: table exceltable1 has 6 columns but 5 values were supplied

有没有人能告诉我这是怎么回事,以及有没有解决办法...
谢谢。

2 个回答

0

你告诉它你有6个列(参数),但实际上你只给了它1个参数。这就是为什么它会告诉你缺少5个列的原因。

1

首先,确认一下row的值是什么,以及它里面有多少个项目:

 print row, len(row)

然后试着使用完整的插入SQL语句:

 insert into table (col1, col2, col3, ...) values (?, ?,? ...)

看看会发生什么。这应该能解决你的问题,或者至少让你明白发生了什么。

撰写回答