2017-08-28 1 views
0

Ich habe den gleichen Code in ubuntu verwendet und es hat gut funktioniert, aber wenn ich versuchte, es in Windows auszuführen gab es mir eine "()" Ausgabe.Was kann der Grund sein .Ich bin neu in diesem Bereich iDaten werden nicht eingefügt in mysql von python

import csv 
import string 
import MySQLdb 

with open('cool1.txt','r') as csvfile: 
    scoreFileReader=csv.reader(csvfile) 
    scoreList=[] 
    for row in scoreFileReader: 
     if len(row) !=0: 
      scoreList=scoreList + [row] 



csvfile.close() 

print(scoreList) 

temp=str(scoreList).translate(string.maketrans('', ''), '[]\'') 
#print(temp) 
db = MySQLdb.connect("localhost","root","","test123") 
    #setup cursor 
cursor = db.cursor() 
#create anooog1 table 
cursor.execute("DROP TABLE IF EXISTS db1234") 

sql = """CREATE TABLE db1234 (
      uid VARCHAR(100) NOT NULL, 
      price INT(100) NOT NULL)""" 
cursor.execute(sql) 

try: 
    cursor.execute("""INSERT INTO db1234 VALUES (%s,%s)""",(scoreList)) 
    db.commit() 
except:  
    db.rollback() 
#how table 
cursor.execute("""SELECT * FROM db1234;""") 
print cursor.fetchall() 
db.close() 

und der Textdatei Daten sieht aus wie diese assistance.` brauchen:

E0 C1 7F 7A 

0 

nach dem außer dem Fehler Entfernen kam wie diese

[['E0 C1 7F 7A'], ['0']] 
Traceback (most recent call last): 
    File "csvfile_writer2.py", line 31, in <module> 
    cursor.execute("""INSERT INTO db1234 VALUES (%s,%s)""",(scoreList)) 
    File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 174, in execute 
    self.errorhandler(self, exc, value) 
    File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler 
    raise errorclass, errorvalue 
_mysql_exceptions.ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'),("\'0\'",))\' at line 1') 

vor mit der Ausnahme-Klausel es kam

C:\Users\supar\Desktop>python csvfile_writer2.py 
[['E0 C1 7F 7A'], ['0']] 
() 

C:\Users\supar\Desktop> 
+0

Sie keine leere 'außer verwenden:' Klausel. Möglicherweise erhalten Sie einen Fehler, der verhindert, dass die Daten eingefügt werden. – bernie

+0

die Ausgabe kam wie folgt – Fiore

+0

Sie haben zwei Platzhalter und ein Element bei jeder Iteration einfügen. Das wird nicht funktionieren. – bernie

Antwort

1

Sie haben zwei Platzhalter und nur ein Element auf jeder Iteration einzufügen. Reduzieren Sie daher die Anzahl der Platzhalter auf eins.

Und da Sie einen Container von Containern haben Verwendung .executemany() eingeführt werden, z.B .:

cursor.executemany("""INSERT INTO db1234 VALUES (%s)""", scoreList) 
Verwandte Themen