2013-02-24 50 views
0

您好我纔剛剛開始使用Python,錯誤導入CSV時到MySQL使用Python

我寫了這個.py文件用一個簡單的測試,並一直很好,但是當我只是單純地增加了更多的%s的它炸彈的出有:

錯誤: File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 159, in execute query = query % db.literal(args) TypeError: not enough arguments for format string

的Python腳本:


import csv 
import MySQLdb 

    mydb = MySQLdb.connect(host='localhost', 
    user='root', 
    passwd='******', 
    db='kestrel_keep') 

cursor = mydb.cursor() 

csv_data = csv.reader(file('data_csv.log')) 

for row in csv_data: 

     cursor.execute('INSERT INTO `heating` VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,)', 
     row) 
#close the connection to the database. 
mydb.commit() 
cursor.close() 
import os 


print "Done" 

CSV文件格式:

2013-02-21,21:42:00,-1.0,45.8,27.6,17.3,14.1,22.3,21.1,1,1,2,2 
2013-02-21,21:48:00,-1.0,45.8,27.5,17.3,13.9,22.3,20.9,1,1,2,2 

任何想法?

謝謝。

+1

您在調用'cursor.execute'時有14'%s'佔位符,但樣本CSV文件的每一行只有13個項目。這可能是一個開始的好地方。 – 2013-02-24 17:46:48

+0

是的,當我刪除最後一個我得到列計數錯誤??? – ZeroG 2013-02-24 17:48:18

+0

數據庫加熱表中有多少列?你可以通過運行'mysql'命令行客戶端並執行'DESC heating'語句來找到。 – 2013-02-24 17:50:46

回答

0

檢查並再次檢查!

我有不同的字段..

I.e.如果您遇到上述錯誤,通常是因爲您的csv與%s佔位符的金額不同。當您的mysql表列存在差異時,您將收到列計數錯誤。

謝謝Adam Mihalcin幫忙指出了這一點!