在python中调用MySQLdb模块插入数据信息,假设待输入信息data为:
其中同时包含了单引号和双引号
一般插入语句为
sql = "insert into tb (my_str) values('%s')" % (data)
cursor.execute(sql)</pre>
其中values('%s')中的%s外面也要有引号,这个引号与data中的引号匹配导致了内容错误
解决办法一: MySQLdb.escape_string()
在MySQLdb模块中自带针对mysql的转义函数escape_string(),直接调用即可
sql = "insert into tb (my_str) values('%s')" % (MySQLdb.escape_string(data))
cursor.execute(sql)
解决办法二:转义字符
将data变为下面的形式,再插入数据库就正确了
Hello\'World\"!
具体在python中的转义函数如下:
def transferContent(self, content):
if content is None: return None else:
string = ""
for c in content: if c == '"':
string += '\\\"'
elif c == "'":
string += "\\\'"
elif c == "\\":
string += "\\\\"
else:
string += c return string</pre>