1. 程式人生 > >python執行sql語句時所傳引數含有單引號

python執行sql語句時所傳引數含有單引號

 

在編寫自己的程式時,需要實現將資料匯入資料庫,並且是帶引數的傳遞。

執行語句如下:

 

sql_str = "INSERT INTO teacher(t_name, t_info, t_phone, t_email) VALUES\

                             (\'%s\', \'%s\', \'%s\', \'%s\')" % (result, result2, phoneNumber, Email)

cur.execute(sql_str)    

 

執行程式後,產生錯誤:

 

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 '07、PRICAI'08、ACML'09 程式委員會主席/共同主席,多次擔任 ACM K' at line 1")

 

發現是因為result2引數為一個字串,而字串中出現了單引號 ',mysql語句受到影響報錯。

 

原本認為這個問題應該會是有標準解決方案,可是網上查詢了一下,遇到這個問題的人不少,但沒有很好的方法解決。

 

於是考慮了一下,可以讓sql語句在讀取到單引號時,知道這是字串文字的單引號,所以可以將引數中單引號替換為 \' ,這樣或許可以順利語句如下:

 

result2 = result2.replace("'","\\'")      #將result2中的 ' 替換為 \'

PS: 這裡請務必看清雙引號以及反斜槓的使用:

經過測試,問題得到了順利解決。