Python使用PyMysql模块报错:lock wait timeout exceeded; try restarting transactio

呵呵,我只想说:关于这个问题我整了两个星期,关于这个问题的原因,从网上看到的很多文章全都是说要conn.commit(),

但是我在程序里面已经commit()了,最后定位到的问题是Pymysql在多线程(或多进程下)面会有bug,对,你没听错,

Pymysql模块自身的bug造成的:

解决方案:利用DBUtils.PooledDB import PooledDB中的这个类来解决。

核心如下:

POOL = PooledDB(
    creator=pymysql,
    maxconnections=6,
    mincached=2,
    maxcached=5,
    maxshared=3,
    blocking=True,
    maxusage=None,
    setsession=[],
    ping=0,
    host=db_info['host'],
    port=db_info['port'],
    user=db_info['user'],
    password=db_info['password'],
    database=db_info['database'],
    charset='utf8'
)
哎,这个bug确实比较坑啊。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只懒得睁眼的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值