关于django migrations的使用
2016-10-21 16:33
295 查看
django 1.8之后推出的migrations机制使django的数据模式管理更方便容易,现在简单谈谈他的机制和一些问题的解决方法:
1、谈谈机制:migrations机制有两个指令,第一个是makemigrations,第二个是migrate,生成migrations代码的makemigrations指令是用models里面的model和当前的migrations代码里面的model做对比,如果有新的修改,就生成新的migrations代码,migrate指令是用migrations目录中代码文件和django数据库djaong_migrations表中的代码文件做对比,如果表中没有,那就对这些没有的文件按顺序及依赖关系做migrate
apply,然后再把代码文件名加进migrations表中。
一些问题的解决方法:
1、旧的项目如果升级到migrations机制:项目当前状态,应该是数据库和model定义一致,然后makemigtations,把生成的migrations initial文件全部加进django_migtrations表中,剩下的工作就和正常使用一样了。
2、managed=Fasle表的测试处理,空库测试,这部分表也需要做进测试数据库,这部分表,可以先在False状态下makemigrations,然后migrate一次,这样那些migrations代码已经属于已执行状态,剩下的就是把model和migrations代码中的manged全部切为true,这样这些代码就可以在空库测试中可用,同时不会再向数据库同步,当然这些表加字段就需要你自己先makemigrations一次,然后手动merge新旧migratons脚本,当然最后最后这部分新的migrations代码需要删除掉。
3、关于migrations Schema学习的问题,migrations代码实际叫Schema,这个代码也是Python代码,非常易读,稍微学一下,以后可以帮助你解决不少类似问题2这样的问题。
1、谈谈机制:migrations机制有两个指令,第一个是makemigrations,第二个是migrate,生成migrations代码的makemigrations指令是用models里面的model和当前的migrations代码里面的model做对比,如果有新的修改,就生成新的migrations代码,migrate指令是用migrations目录中代码文件和django数据库djaong_migrations表中的代码文件做对比,如果表中没有,那就对这些没有的文件按顺序及依赖关系做migrate
apply,然后再把代码文件名加进migrations表中。
一些问题的解决方法:
1、旧的项目如果升级到migrations机制:项目当前状态,应该是数据库和model定义一致,然后makemigtations,把生成的migrations initial文件全部加进django_migtrations表中,剩下的工作就和正常使用一样了。
2、managed=Fasle表的测试处理,空库测试,这部分表也需要做进测试数据库,这部分表,可以先在False状态下makemigrations,然后migrate一次,这样那些migrations代码已经属于已执行状态,剩下的就是把model和migrations代码中的manged全部切为true,这样这些代码就可以在空库测试中可用,同时不会再向数据库同步,当然这些表加字段就需要你自己先makemigrations一次,然后手动merge新旧migratons脚本,当然最后最后这部分新的migrations代码需要删除掉。
3、关于migrations Schema学习的问题,migrations代码实际叫Schema,这个代码也是Python代码,非常易读,稍微学一下,以后可以帮助你解决不少类似问题2这样的问题。
相关文章推荐
- 关于django migrations的使用
- 关于django migrations的使用
- django模板中关于过滤器的使用
- 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
- #关于在heroku部署django 项目时,使用postgresql数据使用
- Django基于Pycharm开发之四[关于静态文件的使用,配置以及源码分析](原创)
- 关于使用Aptana+Pydev构建Python开发环境(Django)
- django数据模型中关于on_delete的使用
- 7 Django系列之关于bootstrap-table插件的简单使用
- 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
- 关于django Models的个人理解和related_name的使用
- 关于使用Aptana+Pydev构建Python开发环境的更新(Django)
- Django开发中关于复选框的使用
- 关于单独使用django orm 我的作法
- django1.6 使用userprofile 以及一些关于用户系统的总结
- 关于django1.7.7使用ajax后出现“CSRF token missing or incorrect”问题的解决办法
- django的modelform关于save()方法的使用说明
- django 关于Pillow的安装使用
- 关于django Models的个人理解和related_name的使用
- 关于Django 使用$.post(),$.get(),$.ajax()等异步操作时的一些问题的解决方案