admin管理员组

文章数量:1630584

解决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/jc/16692.html

本文标签: 报错连接数据库errOperationalErrorPython