在用Python操作MySQL数据库时遇到的问题,在插入数据时,如果原数据中出现诸如';等就会出现MySQL解析错误。

发现MySQL本身并没有提供相关解决办法,然后就找到了Python中类似PHP的addslashes()函数的re.escape()函数,用起来挺不错的。

re.escape()实际上本身是用来处理需要进行正则表达式匹配的字符串中,本身包含正则表达式元字符的情况,而这个函数的处理方法也很简单,就是对字符串中所有的非字母(ASCII letters)、数字(numbers)及下划线('_')的字符前都加反斜线\,这样进行转义处理。

实际上re.escape()也正好可以用来对MySQL语句进行转义处理。

import re
a = "he's pen."
print(a)  # he's pen.
a = re.escape(a)
print(a)  # he\'s\ pen\.
a = a.replace('\\', '')
print(a)  # he's pen.

注意上面对转义后字符串还原方法的细节。