完美解决AttributeError: module ‘pymysql‘ has no attribute ‘escape_string‘

运行的好好的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 这个函数/方法了。

希望对你有帮助!

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值