首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目前使用Django“进化”,“南”更好,值得更换吗?

目前使用Django“进化”,“南”更好,值得更换吗?
EN

Stack Overflow用户
提问于 2009-10-19 20:28:12
回答 1查看 4.7K关注 0票数 35

我目前正在使用Django演进来管理我的产品的数据库演进。它并不完美,但我学会了忍受它的缺陷。例如,在移出一个新的模式之前,我总是必须将我的生产数据库复制到测试中,因为" evolve“命令并不总是演化一个在几次小迁移中更改过的数据库(在测试中,我执行了A->B->C,但A->C不会正确地演化。)

南方会解决所有这些问题吗?学习一个新工具的努力值得吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-19 21:12:45

我刚开始使用South,我100%相信它。它也是为数不多的仍在积极开发中的产品之一。

South应该能够很好地处理你上面描述的问题。对于数据库的每次更改,它都会创建一个包含两个方法“向前”和“向后”的文件。下面是一个自动生成的迁移示例:

代码语言:javascript
复制
# > manage.py schemamigration issuetracker added-status-field --auto

# 0004_added-status-field.py
class Migration:

    def forwards(self, orm):

        # Adding field 'Issue.status'
        db.add_column('issuetracker_issue', 'status', orm['issuetracker.issue:status'])       

    def backwards(self, orm):

        # Deleting field 'Issue.status'
        db.delete_column('issuetracker_issue', 'status')

关于它的几个好的方面...

  • South允许您回滚到特定的迁移#如果您希望
  • 如果您的生产站点在迁移0002,并且您的SVN提交在0004上,则South将执行0003然后0004来提升生产数据库的速度。
  • 如果您已经进行了更改并自己进行了更改,您可以告诉South运行一个“假”迁移。通常情况下,迁移系统会抛出一堆乱七八糟的东西,但这使得对数据库的灵活控制变得非常容易。

你需要进行一些自定义操作,比如将一列中的数据复制到另一列中,因为迁移文件只是manage.py migrate [appname] --fake

  • If文件,所以在部署应用程序后,很容易将向前/向后的functions.

  • Migrating修改为South。最新的0.6版本实际上包含了一个命令。

manage.py convert_ to _south [appname]

  • And当然,我怎么会忘记,我最喜欢的功能是自动生成迁移文件

manage.py schemamigration [appname] [description] --auto

抓取

我想我应该为我在开始使用South时所犯的错误添加一些提示。并不是所有的事情都是100%直观的。

  • 在开发数据库上运行convert_to_south命令后,不要忘记在生产数据库上运行migrate --fake,否则South会认为它已过时。
  • 如果您正在创建新应用程序,请使用--initial标志
  • manage.py syncdb。Really.
  • Editing一个模型是一个3步的过程--

1.)保存模型更改

2.)运行schemamigration --auto

3.)运行migrate以实际提交对数据库的更改

南方编辑--为了澄清下面的评论,核心贡献者正式投票决定不将包含在版本1.2中。这在一定程度上是因为南方的作者要求尚未将其包括在内。尽管如此,还是有很多对South的社区支持,一些可重用的应用程序制造商开始在他们的应用程序中包含South迁移。

编辑#2 --我做了一些更新,以反映来自当前主干版本的新manage.py命令结构。根据您所做的工作,"startmigration“分为"schemamigration”和"datamigration“。

票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1590944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档