2017-01-09 8 views
0

Ich versuche, meine Daten von .csv in Mysql-Datenbank mit Python-Skript einzufügen._mysql_exceptions.OperationalError: (1366, "Falscher Integerwert: '% s' für Spalte 'ID' in Zeile 1")

Python-Skript, das ich verwendet

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" 

Antwort

0

Sie vergessen die Zeilendaten in die Update-Abfrage einfügen.

ersetzen:

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

mit:

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

Danke, es hat funktioniert –

+0

Ich bin froh, dass ich helfen konnte! Bitte akzeptiere die Antwort dann, P. –

0

Eigentlich noch besser betrachten Parametrisierung Abfrage:

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

Noch schneller ist ein Bulk-Befehl direkt von csv mit MySQL LOAD DATA INFILE (vorausgesetzt, die Serverinstanzeinstellungen erlauben dies):

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") 
Verwandte Themen