2008-08-21 61 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