0

我有一个模型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

4

1 回答 1

0

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

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)。

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

于 2013-08-02T03:01:44.110 回答