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