2016-01-21 22 views
1

我想通過python將列表中的變量傳遞到mysql表中。我將在列表中排在最後,直到我收到關於特殊字符的錯誤。我正在使用的代碼行如下:使用python將特殊字符傳遞到mysql

  new_value = "INSERT INTO favs VALUES (null, '%s', '%s', '%s', '%s')" % (item1,item2,item3,item4). 

第一項是問題,因爲它有很多變量,其中包含着各種各樣的變量。 感謝

+0

是的,正如@alecxe所說,三個引號會做到這一點''「」SQL「」「'' – iSkore

回答

2

讓數據庫驅動程序擔心和參數查詢

query = """ 
    INSERT INTO 
     favs 
    VALUES 
     (null, %s, %s, %s, %s) 
""" 
cursor.execute(query, (item1, item2, item3, item4)) 
+0

這樣做,謝謝。 – wizzer

0

除了上述的解決,在MySQL中的轉義字符是反引號即。 `。

所以,如果你寫了這個:

new_value = "INSERT INTO favs VALUES (null, '%s', '%s', '%s', '%s')" % (item1,item2,item3,item4) 

它改成這樣:

new_value = "INSERT INTO favs VALUES (null, `%s`, `%s`, `%s`, `%s`)" % (item1,item2,item3,item4) 

這就是快速的 「黑客」。更好的方法是如上所述參數化它;但爲了所有意圖和目的,這將起作用。接受的用法是在列名和表名上使用反引號。所以如果有人命名一個列鍵,這是一個保留關鍵字,你可以逃避它。

+0

感謝您的信息。 – wizzer