运行的好好的python脚本,换了个环境,装好各个需要的模块后,发现脚本运行时报这个错误。
AttributeError: module 'pymysql' has no attribute 'escape_string'
经过搜索,发会现这是新版的pymysql模块把这几个方法给删除了。自1.0.0版本后它就把这些属性给移除了。这种是比较坑人的。
再搜索一下国内的一些解决办法,基本上也是能发现这是版本问题,然后大多数提供的办法就是说降级,还有的文章说期望后续版本加回来?拜托,它这又不是什么失误删除的。它版本更新时删除自然有删除的目的。
当然比较正常的解决方案就是既然是新版本,那就用改新版本中的办法,如下代码:
from pymysql.converters import escape_string
不过笔者的使用环境暂时不方便去统一升级版本到最新。于是考虑兼容性,使用如下代码完美解决这个不同版本的兼容问题。
import pymysql
if pymysql.__version__ >='1.0.0':
from pymysql.converters import escape_string
else:
escape_string = lambda x: pymysql.escape_string(x)
这段代码的意思就是先引入pymysql
然后再去判断它的版本号。如果是大于等于1.0.0,则使用新的方法
如果版本低于它,则定义一个函数,该函数调用的就是旧版本的pymysql里面的一个方法。
这样一来,就是不管哪个版本,均可以正常使用escape_string 这个函数/方法了。
希望对你有帮助!