django samesite,玩转django
使用django south作为数据库迁移-海洋/生命之海
与Django South一起进行数据库迁移
2009年11月2日
South,一个帮助django做数据库迁移的app,真的超级方便。之前itszero教我RoR的时候,我看过RoR的数据库迁移,但是当时我完全不知道它是用来做XD的(PHP XD的世界里没有这个东西,但是现在应该是framework提供的吧?只能说RoR真的很先进!
好在django还有app south,可以作为数据库迁移。过去,django写完模型后,执行syncdb可以自动帮助我们构建数据库模式,但只是第一次。之后修改模型的时候就要手动修改数据库,SyncDB就没用了。因为在执行syncdb的时候,如果table已经存在,django会跳过他。幸运的是,south可以自动处理这个烦人的工作。
而且南的使用也很简单。基本上看南方提供的快速入门指南就可以了。下面简单解释一下。(我不能一直用超级短的文章骗浏览量XD)
使用southpythonmanage . py convert _ to _ south app _ name转换应用程序。在这个操作中,南方将检查现有的模型,然后在应用程序中打开一个名为migrations的目录,并添加一个新的0001_initial.py但不要害怕,虽然这里执行的命令名为convert_to_south,但它实际上只是多了一个迁移目录。这个目录是否存在,可以用来判断是否已经南转。因此,如果您不想使用south,只需删除迁移目录。
用南找出模型的变化。app转换成south后,如果模型有什么变化,只要执行下面这个命令,south会自动帮你找出模型的变化,比如添加或删除字段,或者添加索引,south会帮你找出。
python manage . py start migration app _ name migration _ name-auto自动用south更改数据库模式。上面的指令只是为了找出在哪里进行了更改,下面的指令将实际执行更改数据库的操作。
Python manage.py migrate目前我用带fabric的south来部署。在部署过程中自动执行databsae migrate真的超级方便!在过去的开发中,因为新的功能,数据库需要添加一些字段,然后程序需要做相应的修改。但是如果要投产,就要根据之前开发中添加的字段,到生产中对数据库做相关动作,然后再把程序上线。说实话,这个动作真的很讨厌。可能是返回字段的名称输入不正确XD
顺便说一句,目前,还没有以这种方式部署产品的爆炸式增长,但这有点可怕
还原架构。但是,有时需要恢复迁移,而south可以轻松做到这一点。每修改一次,迁移次数就会从0001逐渐增加到0002。如果迁移文件现在已经到了0017,而你想回到之前的0016状态,只需要执行下面的指令。
Python manage.py迁移music 0016和要部署的结构。其实我之前写过一篇关于用fabric部署的文章,里面的fabric脚本可以用在south migrate上。有兴趣的话可以参考一下。
目前整个部署过程大概是这样的。我先做hg push,然后用fab prod deploy将新提交的程序部署到生产服务器,然后执行python manage.py固定迁移,最后服务apache2 reload。所以在部署时,south会检查是否需要迁移,如果需要,它会对数据库进行修改,最后重新加载apache,然后程序会在:D生效
多书场XD
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。