2017-07-03 37 views
0

私のSQLクエリで引用符で問題を解決しようとしています。私は多くの質問がstackoverflowで尋ねられたことを知っています。しかし誰も私のために働いたことはありません。 SQL接続に他のフレームワーク(pyMySQL)を使用している可能性があります。私は、パラメータ化されたMySQLのクエリ試してみました:PythonのMySQLクエリで引用符をエスケープします

conn = pymysql.connect(host ='host', user='user', passwd='user', db='db', charset='utf8mb4') 
    cur = conn.cursor() 
    cur.execute("USE db") 
    cur.execute("UPDATE table SET callback_data = %s, message = %s, photo = %s, location = %s, first_name_last_name = %s WHERE user_id=%s", 
(callback_data, message, photo, location, first_name_last_name, user_id)) 
    cur.connection.commit() 
    cur.close() 
    conn.close() 

をしかし、私は常に%sの(エラーメッセージ:予想、%sになった)でエラーが発生します。私のpythonバージョンは3.6.1です。 SQLクエリで引用符をエスケープする方法は?ありがとう。

+1

"テーブル" は、[予約語](HTTPSです。 mysql.com/doc/refman/5.7/en/keywords.html)ので、それを識別子として使うためにバッククォートで引用する必要があります。それ以外の場合は、実行の呼び出しとクエリ文字列が正常に見えます。タプルには6つのプレースホルダと6つの引数があります。 –

答えて

0

まず、Iljaはmysqlの予約語にバッククォートを使用する必要があると言っています。あなたはJSONをダンプに使用できるテキスト/ varchar型のフィールドの後

:// DEV:

import json 

[...]

cur.execute("UPDATE `table` SET callback_data = %s, message = %s, photo = %s, location = %s, first_name_last_name = %s WHERE user_id=%s", % (
    json.dumps(callback_data), 
    json.dumps(message), 
    json.dumps(photo), 
    json.dumps(location), 
    json.dumps(first_name_last_name), 
    json.dumps(user_id) 
) 
関連する問題