mysql - Django 多个数据库 - 无法连接到 mysql 服务器回退到 sqlite

标签 mysql django django-orm

我有一个包含多个数据库的 Django 应用程序。默认数据库在本地机器上。还有一个远程的mysql数据库,用于一些写操作,但并不总是up。当服务器关闭时,mysqldb 会引发 OperationalError。

我想要一个名为“fallback”的本地 sqlite 数据库,如果 mysql 服务器关闭,它会接受数据。我意识到这涉及到 django.db.mysql.base 中的 try/except 子句,但我不太确定从那里去哪里。有没有人尝试过类似的东西?您对处理此问题的更好方法有何建议?

最佳答案

您可能会使用 Database Routers结合覆盖 save 方法的自定义模型基类。将其包装在 try..catch 中,如果发生 OperationalError,则提供一些提示,以便您的数据库路由器可以确定是否需要使用回退。

我认为这将是最干净的方式,而不是修改 django 代码本身。

关于mysql - Django 多个数据库 - 无法连接到 mysql 服务器回退到 sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5359065/

相关文章:

django - 如何更改字段类型并保留模型 django 3.0 中定义的选择

django - Django queryset values_list是否返回列表对象?

Django模型字段: Ordered List of Foreign Keys

mysql - 与子查询连接、计数和分组

mysql - mysql 查询中 UNION SELECT 的组合 WHERE 子句

django - 将图像传递给 celery 任务

mysql - 如何将 md5 函数应用于 django orm 中的字段?

mysql - 如何限制临时表的大小?

mysql - 如果其中任何一个存在,则从多个表中获取记录的并集

python - Django - 了解 X-Sendfile