2011-06-20 62 views
0

我想在Excel中使用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 

任何人都可以请whats发生在这里我解释一下,如果有任何解决方案...
THX。

回答

1

首先,要确保什么row的价值是,它有多少项目有:

print row, len(row) 

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

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

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

+0

thx很多!这有助于很多:) – Urban

+0

非常感谢,这有所帮助。 – ratna

0

你说的是你有6列(参数),但你只给它1个参数。这就是为什么它告诉你你错过了5列。

相关问题