如何为不同的模型使用不同的数据库

2024-04-19 19:13:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为Requests的模型,我想把它保存在不同于默认django数据库的数据库中。你知道吗

这样做的原因是,该表将记录analytics的每个请求,并且将被大量填充。因为我每小时备份一次数据库,所以我不想只为那个表增加数据库大小。你知道吗

所以我想把它放在单独的数据库里,这样我就不会经常备份了。你知道吗

这个医生是这样说的 https://docs.djangoproject.com/en/dev/topics/db/multi-db/

def db_for_read(self, model, **hints):
    """
    Reads go to a randomly-chosen slave.
    """
    return random.choice(['slave1', 'slave2'])

def db_for_write(self, model, **hints):
    """
    Writes always go to master.
    """
    return 'master'

现在我不知道如何检查,如果我的模型是Requests,那么选择database A否则database B


Tags: to模型selfmaster数据库gofordb
1条回答
网友
1楼 · 发布于 2024-04-19 19:13:27

模型只是类-所以检查,如果你有正确的类。这个例子应该对你有用:

from analytics.models import Requests


def db_for_read(self, model, **hints):
    """
    Reads go to default database, unless it is about requests
    """
    if model is Requests:
        return 'database_A'
    else:
        return 'database_B'

def db_for_write(self, model, **hints):
    """
    Writes go to default database, unless it is about requests
    """
    if model is Requests:
        return 'database_A'
    else:
        return 'database_B'

不过,如果您愿意,还可以使用其他一些技术(例如检查model.__name__或查看model._meta)。你知道吗

不过需要注意的是:请求不应该有外键将它们连接到其他数据库中的模型。但你可能已经知道了。你知道吗

相关问题 更多 >