2017-07-03 106 views
0

我想在我的SQL查詢中解決引號問題。我知道在stackoverflow上有很多問題。但沒有人爲我工作。可能是因爲我正在使用其他框架(pyMySQL)進行sql連接。我試過參數化的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字段轉儲:

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