2017-01-09 4 views
0

私はPythonスクリプトを使用して.csvからMysqlデータベースに自分のデータを挿入しようとしています。私は_mysql_exceptions.OperationalError:(1366、 "不正な整数値:列 'ID'行1の '%s')

import csv 
import MySQLdb 

db = MySQLdb.connect(host='localhost',user='root',passwd='password',db='EfficientBazzar') 
cursor = db.cursor() 

csv_data = csv.reader(file('products.csv')) 
for row in csv_data: 
    cursor.execute('INSERT INTO vendor_price_list(ID,Vendor,productname,productcode,unit,weight,price)' 'VALUES("%s","%s","%s","%s","%s","%s","%s")') 

db.commit() 
cursor.close() 
print "Done" 

答えて

0

を使用

Pythonスクリプトは、あなたの更新クエリに行データを挿入するために忘れています。

置き換えます

'VALUES("%s","%s","%s","%s","%s","%s","%s")' 

で:

'VALUES("%s","%s","%s","%s","%s","%s","%s")' % tuple(row) 
+0

ありがとうございました –

+0

私は助けてよかった!答えを受け入れてください; P。 –

0
実際

でも良く、パラメータ化クエリを考えてみます(

cursor.execute('INSERT INTO vendor_price_list(ID,Vendor,productname,productcode,unit,weight,price)' + \ 
       ' VALUES(%s,%s,%s,%s,%s,%s,%s)', row) 

がさらに速くMySQLのLOAD DATA INFILEとストレートCSVから一括コマンドであり、サーバーインスタンスの設定で許可されていると仮定します)。

cursor.execute("LOAD DATA INFILE '/path/to/products.csv'" + \ 
       " INTO TABLE vendor_price_list" + \ 
       " FIELDS TERMINATED BY ',' ENCLOSED BY '\"'" + \ 
       " LINES TERMINATED BY '\n' IGNORE 1 ROWS") 
関連する問題