Mysqldb sql語句中包含單引號和雙引號的解決辦法


在python中調用MySQLdb模塊插入數據信息,假設待輸入信息data為:

 
data_a = Hello'World"!
 
其中同時包含了單引號和雙引號
 
一般插入語句為
 
sql = "insert into tb (my_str) values('%s')" % (data)
cursor.execute(sql)
 
其中values('%s')中的%s外面也要有引號,這個引號與data中的引號匹配導致了內容錯誤
 
 
 
解決辦法一: MySQLdb.escape_string()
 
在MySQLdb模塊中自帶針對mysql的轉義函數escape_string(),直接調用即可
 
sql = "insert into tb (my_str) values('%s')" % (MySQLdb.escape_string(data_a))
cursor.execute(sql)
 
 
 
解決辦法二:轉義字符
 
將data變為下面的形式,再插入數據庫就正確了
 
data_a = Hello\'World\"!
 
具體在python中的轉義函數如下:
data_a = data_a.replace("'", "\\\'")  將單引號轉成\單引號
data_a = data_a.replace('"', '\\\"')  將雙引號轉成\雙引號
 
要加三個\,這是因為\\會在函數中轉義為\,\'會轉義成',兩者合起來才能在字符串中留下 \',然后sql讀取后才能識別這是轉義;
注意,\本身也需要轉義,否則如果原本字符串中為\',只轉義'就會變成\\\\',結果是\\\\相互抵消,只剩下'
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM