0
我正在使用Python来将csv行插入到SQLite数据库中。我一直在使用它一段时间,它一直在工作。但是,对CSV文件进行了更新,但仅添加了行,而不是列。现在,当我运行代码时,我收到“TypeError:不是在字符串格式化期间转换的所有参数”。我尝试了所有我能想到并发现的东西,但仍然遇到此错误。这是SQLite和Python,TypeError:并非所有在字符串格式化过程中转换的参数
fin = open("file.csv", "rb")
creader = csv.reader(fin, delimiter=',')
sql_insert = "INSERT INTO WR_Training VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
# Iterate through creader and insert the values into the table
# Pop off the 3 resources columns and insert the others
for row in creader:
row.pop(27)
row.pop(26)
row.pop(25)
if row[2] != "":
cu.execute(sql_insert, row)
fin.close()
cx.commit()
cx.close()
最初执行该数据库的插入部分,有29列一起的代码,这就是为什么我用row.pop弹出关闭,我不想要的列,所以我也不要将它们包括在表格的原始创建中。所以它存储了29列中的29个。我曾经使用%s而不是?对于sql命令,但是%s不工作,现在呢?不起作用。
任何建议将是非常有益的!
谢谢
发表一些代码? – kindall 2012-03-31 01:14:22
你是否通过查看'len(row)'来验证'row'是否有你认为应该有的列数?你确定这符合SQL语句中'?'标记的数量吗? – larsks 2012-03-31 01:32:03
在执行之前尝试'print(len(row))',以确保它与您想象的一样长。 Python告诉你它超过26个项目。 – kindall 2012-03-31 01:32:35