2017-08-28 3 views
0

私はubuntuで同じコードを使いましたが、うまくいきましたが、Windowsで実行しようとすると "()"という出力が出ました。私はmysqlに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() 

assistance.`必要とテキストファイルのデータは、これらのように見えるように、このフィールドに新しい:エラーを除いて除去した後

E0 C1 7F 7A 

0 

は、これらの

[['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') 
ようになりました

句を除いて、それは

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

C:\Users\supar\Desktop> 
+0

を持っているので:'句。データが挿入されないようにするエラーが発生している可能性があります。 – bernie

+0

出力は次のようになりました – Fiore

+0

2つのプレースホルダーと1つのアイテムが各反復に挿入されます。それは動作しません。 – bernie

答えて

1

を来ていたとあなたが各反復に挿入するために2つのプレースホルダと項目を1つだけ持って前に。したがって、プレースホルダの数を1つに減らすだけです。

そして、あなたは除き `空白を使用しないでください使用.executemany()を挿入するコンテナのコンテナ、例えば:

cursor.executemany("""INSERT INTO db1234 VALUES (%s)""", scoreList) 
関連する問題