2017-08-28 4 views
0

J'ai utilisé le même code dans ubuntu et cela a bien fonctionné mais quand j'ai essayé de le lancer dans windows il m'a donné une sortie "()" .Quel peut être la raison.Je suis nouveau dans ce domaine j'ai besoin assistance.`Les données ne sont pas insérées dans mysql par 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() 

et les données de fichier texte ressemble à celles-ci:

E0 C1 7F 7A 

0 

après avoir enlevé l'exception de l'erreur est venu comme ces

[['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') 

avant avec clause d'exception, il venait

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

C:\Users\supar\Desktop> 
+0

Ne pas utiliser 'l'exception en blanc: clause'. Vous pouvez obtenir une erreur qui empêche les données d'être insérées. – bernie

+0

la sortie est venue comme ceci – Fiore

+0

Vous avez deux espaces réservés et un élément à insérer à chaque itération. Cela ne marchera pas. – bernie

Répondre

1

Vous avez deux espaces réservés et un seul élément à insérer à chaque itération. Il suffit donc de réduire le nombre d'espaces réservés à un.

Et puisque vous avez un conteneur de conteneurs à insérer utilisation .executemany(), .: par exemple

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