使用db模型时,Python解决_mysql_exceptions.OperationalError:(2006,'MySQL服务器已消失')

问题描述 投票:0回答:1

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

按逻辑,有2个解决方案

  • 增加mysql connection timeout,但这是没有选择的余地
  • 具有python检查打开的连接,如果关闭则重新打开它

已找到一些解决方案,并且在possible solution和此处about closing and opening cursors听起来很清晰。

但是我们使用的是来自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)

python python-3.x mysql-python
1个回答
0
投票

如果关闭连接,django将在需要查询数据库时自动将其重新打开。

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

from django.db import connection 
...
connection.close()
© www.soinside.com 2019 - 2024. All rights reserved.