【发布时间】:2011-06-28 15:39:48
【问题描述】:
我想知道在项目的繁重初始开发过程中使用 (django) South 的优势。
在开发的早期阶段,通常会发生快速的模型更改、频繁的分支和合并(特别是如果您使用 git-flow 之类的开发策略),并且存储的数据非常少(如果有的话)。为什么要保留这些初始模型更改?有什么优点/缺点?
我的印象是,在激活 South 并执行初始迁移之前,等待开发稳定下来(并且您拥有真正想要保留的数据)会更容易。有可能这样做吗?你愿意这样做吗?
【问题讨论】:
-
我同意。这就是为什么我认为 Django 需要在核心中集成一些模式更改功能,因为它目前非常令人沮丧。
-
@meder 您如何建议在没有迁移系统的情况下这样做?在我看来,南方很好地填补了这个空白。
-
在每次影响数据库的模型更改后,我只保留一个版本控制文件 Evolution.sql 粘贴到 SQL 命令中。我还有一个 Evolution.py,它使用较低级别的 DB 包装器(在我的例子中是 MySQLdb)进行数据密集型迁移更改。更少的代码,更少的错误。在数据方面,我不希望出现问题。
-
@Frank 可能适用于模式更改(前提是您跟踪先前运行的命令)。使用 south,您不必编写 SQL(它更便携,而且谁还想编写 SQL?)来进行更改。如果您在同一个项目中有多个开发人员,那么您的解决方案也是噩梦般的。
-
这没什么可怕的。对我来说唯一可怕的只是另一种依赖。可移植的迁移代码是我最不想使用的东西。框架提供的自动化使人们变得懒惰。用特定于数据库的方言编写迁移 SQL 并没有错,除非您为程序员制作产品并且必须支持不同的数据库。尽早了解您的数据库,这样您就不需要在头发长大时拔掉头发。低水平是好的。在数据一致性方面,您想知道到底发生了什么。
标签: django django-models django-south