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

时间:2013-08-02 02:49:59

标签: python database django

我有一个名为Requests的模型,我希望将其保存在与默认django数据库不同的数据库中。

这样做的原因是该表将记录analytics的每个请求,并且将会非常重要。因为我每小时进行数据库备份所以我不想仅为该表增加db大小。

所以我考虑放入单独的数据库,这样我就不会经常备份它。

这个文档就是这样说的 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

1 个答案:

答案 0 :(得分: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)。

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