2017-07-21 13 views
0

私はフィールドがLONGTEXT型を持つMySQLのテーブルにクエリの入力を実行しようとしています: コードの一部:PythonでMySQLにテキストフィールドを使用してクエリを行うには?

def read_csv_audio(): 
    with open(audio_file) as csvfile: 
     reader = csv.DictReader(csvfile) 
     for row in reader: 
      new = [] 
      new.append(str(row['audio_url'])) 
      new.append(str(row['google text'])) 
      new.append(str(row['nuance text'])) 
      new.append(str(row['checked text'])) 
      auds.append(new) 
      print(row['audio_url'], row['google text'], row['nuance text'], row['checked text']) 
    return auds; 

read_csv_audio(); 

i = 0; 
for row in auds: 
    add_auds = ("INSERT INTO InnoDB.auds_text (audsid, audio_url, google, nuance, checked) VALUES ("+str(i)+", '"+str(row[0])+"', '"+str(row[1])+"', '"+str(row[2])+", '"+str(row[3])+"') ") 
    print(add_auds) # beneath the example1 of print 
    cursor.execute(add_auds) 
    i += 1 

例1: INSERT INTO InnoDB.auds_text(audsid、audio_url、グーグル、ニュアンス、チェック済み)VALUES(0、 '36649/crawler377116_1_0_20.wav'、 'メディアコムのニューヨーク本部に到達しました。即時援助のための会社のディレクトリのための8あなたが終わったときにオペレータのための0を押してくださいまたは他のオプションのためのポンドを押してください '、あなたはニューヨークの本部に達しましたあなたが到達したい人の内線を知っている場合は、いつでもダイヤルするために名前を付けてダイヤルしてください。会社のディレクトリには8を直接援助してください。オペレーターはゼロを押してください。あなたが到達したい人の内線を知っているなら、あなたはMediacomのNew York本部に連絡しています。名前をつけてダイヤルすることができます。あなたはより多くのオプションのために完成ハングアップやプレスポンドされている場合ビープ音のオペレータレコードあなたのメッセージのための「)

しかし、私はエラーを持っている:

mysql.connector.errors.ProgrammingError: 1064 (42000): 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 'you have 
reached the New York headquarters of Mediacom if you know 
the extension' at line 1 

テキストを使った作業の間違いを修正するにはどうすればよいですか?生成されたクエリで

答えて

1

、あなたはここで終了単一引用符が欠落している:

...pound for more options, 'you have...

私はそれがあなたの最後から二番目の値の最後になると思います。これに

add_auds = ("INSERT INTO InnoDB.auds_text (audsid, audio_url, google, nuance, checked) VALUES ("+str(i)+", '"+str(row[0])+"', '"+str(row[1])+"', '"+str(row[2])+", '"+str(row[3])+"') ") 

add_auds = ("INSERT INTO InnoDB.auds_text (audsid, audio_url, google, nuance, checked) VALUES ("+str(i)+", '"+str(row[0])+"', '"+str(row[1])+"', '"+str(row[2])+"', '"+str(row[3])+"') ") 

(それはstr(row[2])近く追加の単一引用符です)

あなたは、この行を変更する必要があります。

編集:私はあなたが「準備された文を」使用するようにコードを変更することをお勧め

。この種のエラーが発生しないようにするだけでなく、一般的にはsanitisationとタイプマッチングを無料で(セキュリティと信頼性を向上させるために)投じるようにするのがよい方法です。

詳細については、次の質問からお答えください。Using prepared statements with mysql in python

関連する問題