如何始终为某些 django 模型使用特定的数据库连接?

Posted

技术标签:

【中文标题】如何始终为某些 django 模型使用特定的数据库连接?【英文标题】:How to always use a specific DB connection for certain django model? 【发布时间】:2016-09-22 08:08:29 【问题描述】:

我将在 django 应用程序中添加一个程序,我需要在其中存储数据,但只需要几个小时,我也不想在我的数据库模式中添加另一个表(这有点大),我是考虑使用 redis 完成任务,最终我想要实现的是拥有一个 Transfer 模型,并且我希望该模型始终使用另一个数据库进行其 CRUD 操作。

例子:

Transfer.objects.all()  # Always be the same as Transfer.objects.using('redis').all()
OtherModel.objects.all()  # Always use default DB

# Same for save
transfer_instance.save()  # Always translate to transfer_instance.save(using='redis')
other_instance.save()  # Work as usuall using default DB

我怎样才能做到这一点?只要有效,我不介意使用晦涩的诡计。

谢谢!

【问题讨论】:

【参考方案1】:

您将需要使用数据库路由器来实现您所需要的。

这里是Using Database Routers的官方文档

【讨论】:

以上是关于如何始终为某些 django 模型使用特定的数据库连接?的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中为特定视图设置用户权限

如何设置 Django 权限以特定于某个模型的实例?

如何在不定义内容类型或模型的情况下使用 Django 权限?

选择特定选项后,如何更改 Django 模型字段的值?

Python:如何在我的 Django 模板中传递外键的值?

如何在 Django 中为特定用户和特定项目使用 deleteview?