首页 > 解决方案 > Python 解决 _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away') when using db models

问题描述

所以我们的python程序遇到了这些错误_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')。问题是程序访问数据库,母鸡做了很多爬网,然后返回结果mysql connection timeout......然后为时已晚。

按逻辑有2个解决方案

已经找到了一些解决方案,并且听起来很清楚可能的解决方案,这里关于关闭和打开游标

但是我们正在使用来自 django 的模型 .. 我不知道在哪里实现check for a connection and reconnect of the connectin is lost检查逻辑。

问题:在使用模型时,我在哪里以及如何实现所描述的逻辑以重新连接到丢失的数据库连接?(是否有某种INITCONNECT事件可以访问)

示例代码

from django.db import models

class Domain(models.Model):
    name = models.CharField(max_length=100)
    domain = models.CharField(max_length=100, blank=True, null=True)

标签: pythonpython-3.xmysql-python

解决方案


如果你关闭了你的连接,如果需要查询数据库,django 会自动重新打开它。

因此,如果您知道问题出在某个函数中,无论是否是视图,您都可以在该函数之前或开始时关闭连接:

from django.db import connection 
...
connection.close()

推荐阅读