2013-08-02 22 views
0

我有一個名爲Requests,我想在不同的數據庫默認的Django DATABSE保存模型。如何使用不同的數據庫對於不同的車型

這樣做的原因是,該表將要錄製analytics每一個請求,並且是會得到填充非常沉重。由於我每小時都在進行數據庫備份,因此我不想僅爲該表增加數據庫大小。

所以我想在不同的DB puting的,這樣我就不會備份起來更加頻繁。

該文檔說,像這樣 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

回答

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

一個注意,雖然:請求不應有其它數據庫中把它們連接到模型的外鍵。但是你可能已經知道了。

+0

我想'SYNCB --database = analytics'我試圖輸出中的結果,我得到這個'引發異常(型號.__ name__) 例外:Permission'所以我覺得模式是別的東西不是我的請求模型 – fdsgds

+0

我試着這一點,它創造了除一個我的其他數據庫中所有表我想 – fdsgds

+0

@fdsgds:你檢查:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#allow_syncdb? – Tadeck

相關問題