python執行sql語句時所傳引數含有單引號
阿新 • • 發佈:2018-11-04
在編寫自己的程式時,需要實現將資料匯入資料庫,並且是帶引數的傳遞。
執行語句如下:
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: 這裡請務必看清雙引號以及反斜槓的使用:)
經過測試,問題得到了順利解決。