解决python连接数据库报错:pymysql.err.OperationalError: (2013, ‘Lost connection to MySQL server during query’)

解决python连接数据库报错:pymysql.err.OperationalError: (2013, ‘Lost connection to MySQL server during query’)

原因定位:在项目实践过程中,发现当查询语句比较复杂时,sql语句过长时,会出现mysql断开连接的情况

尝试解决方案:当connect断开后,重新进行连接。ping(reconnect=True)

def execute(self, dql):
        """执行数据库查询语句"""
        while True:
            try:
                self.__cursor.execute(dql)
            except Exception:
                self.db.ping(True)
            return self

def execute_operate(self, dql):
    """执行数据库插入或删除语句"""
    while True:
        try:
            self.__cursor.execute(dql)
            self.db.commit()
        except Exception:
            self.db.ping(True)
        return self

在封装的数据库操作方法中,增加循环尝试,如果出现断开则重连。再次运行代码后没有报错,成功解决问题。

知识汇总:

Connection中常用Api
1、open()检测数据库是否连接,connect.open如果数据库连接返回True,否则返回False
2、ping(reconnect=True) ,connect.ping(reconnect=True),如果reconnect=True表示断开后,重新进行连接
3、rollback(),回滚当前事务
4、select_db(db),切换数据库
5、cursor(),创建游标对象,用于操作数据(增、删、改、查)
6、commit(),提交请求,当向数据库中插入数据时,需要使用commit()进行提交,否则数据不能写入数据库
7、close(),关闭数据库连接

借鉴原文地址:https://www.python51.com/jc/16692.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值