2008-08-21 71 views
10

我目前正在查看Python框架Django,以便爲將來的基於數據庫的Web應用程序以及當前用PHP編寫的一些應用程序的端口。在我的最後幾年中,最棘手的問題之一是跟蹤數據庫模式更改並將這些更改部署到生產系統。我並沒有敢要求能夠撤消它們,但當然是用於測試和調試,這將是一個很棒的功能。從這裏的其他問題(如this onethis one),我可以看出我並不孤單,這不是一個小問題。另外,我在那裏找到了很多靈感。版本跟蹤,使用django自動化DB架構更改

現在,由於Django似乎非常強大,它是否有任何工具來幫助上述?也許它甚至在他們的文檔中,我錯過了它?

回答

12

至少有兩個第三方實用程序來處理數據庫模式遷移,SouthDjango Evolution。我還沒有嘗試過任何一種,但我已經聽說了關於南方的一些好消息,雖然Evolution已經有了更長的一段時間。

另請參閱Django wiki上的SchemaEvolution。它只是一個關於遷移數據庫的wiki頁面。

+0

南方似乎是在與Django Evolution玩弄後最好的日子,我認爲南方的數據遷移是殺手級的功能。我不認爲Django Evolution有數據遷移。只有Schema Evelution – Rasiel 2009-06-18 02:59:31

2

我最後一次檢查(版本0.97),執行syncdb將能夠添加表與你的models.py文件同步您的數據庫架構,但它不能:

  • 重命名或填充的添加列D B。你需要手工完成。
  • 重構您的模型(如將一張表分成兩份)並相應地重新填充您的數據庫。

可能可以,雖然寫一個Django腳本用兩種不同的managers打,使遷移,但如果你的數據庫是大,可能需要年齡。

0

現在還有dmigrations。從announcement

Django的進化試圖解決這一問題,聰明的方法,通過檢測尚未反映在數據庫架構更改模型,並找出需要做的,使兩個後置同步什麼。 相比之下,dmigrations採用了愚蠢的方法:它要求您明確聲明一系列遷移中的更改,然後依次應用這些更改以使數據庫達到反映基礎模型的最新狀態。

這意味着開發人員需要額外的工作來創建遷移,但它也會使整個過程完全透明 - 對於我們的項目,我們決定採用最簡單的系統,可能有效。

(我的粗體)

0

我聽到的良好Django Schema Evolution Branch很多,這些都是實際用戶的opions。它最大限度地開箱即用,做它應該做的事情。

0

U應該查找Dmigrations,它的功能與django-eveoltions有點不同。 它向你展示了它正在做的一切,以及它爲你的天問而問你的複雜事物。它應該很棒。

1

在最近的DjangoCon上有關於數據庫模式更改的面板會話;有一個video of the session(感謝谷歌),它應該提供一些這些實用程序的一些有用的信息。

+0

尼斯會議。我想我堅持使用django進化了。 – Farinha 2008-10-03 17:15:23