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