2012-02-27 49 views
1

我有一個django模型,我將其稱爲基礎模型。我創建了一個動態創建新數據庫的項目。現在,我發現我必須對基表中的表模式進行更改。我如何將更改更新到所有創建的數據庫?參考基礎數據庫應用django進化到多個數據庫

+2

「我已經創建了一個項目,動態創建新的數據庫」 - 停在那裏。刪除它。 – 2012-02-27 10:45:00

+0

我的意思是新的數據庫。我有一個基礎數據庫。對於每個租戶,我的項目使用sync db命令創建一個新的數據庫。我的應用程序正在生產中,現在我已經意識到我必須在所有創建的數據庫中更新表模式。 – 2012-02-27 10:54:53

+0

說實話,如果你想從一個項目中使用它們(可能是其他數據庫只是靜態拷貝?),用Django創建新的數據庫是個問題。如果這樣做,那麼你所有的數據庫都必須在DATABASES字典中列出。但動態更改DATABASES字典不是很好的編程風格。 – sergzach 2012-02-27 11:10:56

回答

1

也許它不是你目前的問題的真正的決定,但對未來問題的決定:在同一時間做所有數據庫架構更改。

您可以自動執行此過程。做一個循環中的所有數據庫的下一個:

from subprocess import call 

# get names of your databases in list 'databases' here 

for database in databases: 
    call("python ./manage.py syncdb --database={0}".format(database)) 
+0

這就是我一直在尋找的。謝謝..讓我通過創建一個新的命令並使用上面的代碼來測試它。 – 2012-02-27 11:07:33

0

請參閱using Django Evolution in your projects

你需要運行:

./manage.py evolve --hint --execute 
+0

./manage.py evolve --hint --execute將參考模型更新單個數據庫。我必須更新多個數據庫。 – 2012-02-27 10:55:42