在 Django 中处理生产迁移和开发迁移
Posted
技术标签:
【中文标题】在 Django 中处理生产迁移和开发迁移【英文标题】:Handle Production Migrations and Development Migrations in Django 【发布时间】:2021-08-30 13:27:39 【问题描述】:在开发 Django 项目时,您的所有迁移都存储在每个应用程序文件夹中,但是,在生产中我不想要这些迁移,我想保留一个 Production
数据库和一个 Development
数据库:
如何在生产和开发环境中处理 Django 迁移?
我问这个问题是因为很难在开发项目中使用新添加来更新我部署的项目,我的理想方案是将每组迁移保留在我的源代码之外的文件夹中,就像数据库一样.
【问题讨论】:
您不能只更改DJANGO_SETTINGS_MODULE
环境变量以指向更改DATABASES
设置的“开发”或“生产”设置模块吗?然后你可以使用 dev 或 prod 数据库。或者只是使用 git 之类的源代码版本管理来保持“生产”和“开发”分支。
最好的办法是保持生产和开发迁移相同,并在推送代码之前开发干净的迁移。 github.com/HackSoftware/Django-Styleguidegithub.com/pydanny/cookiecutter-django查看这些链接
@CharanjitSingh 你所说的“清除迁移”是什么意思?
我的意思是在开发过程中的干净迁移,您最终可能会删除一个表并重新创建它,因此请确保您不会推动非预期的迁移。问题是您应该将迁移视为代码,而不是自动化脚本。我过去犯了很多错误,所以我得出了在代码中包含迁移的结论。这是有效的,并提供了更多的控制。而且生产中可能要进行数据迁移,不推送代码怎么办?
感谢@CharanjitSingh,我查看了您引用的样式指南,我同意您的迁移,您应该将无人看管的迁移推送到您的生产代码。
【参考方案1】:
最好的办法是保持生产和开发迁移相同,在开发过程中,在推送代码之前进行干净的迁移,您也应该将迁移推送到您的版本控制系统中。
在开发过程中,您最终可能会删除一个表并重新创建它,因此请确保您不会推送意外迁移。问题是您应该将迁移视为代码,而不是自动化脚本。我过去犯了很多错误,所以我得出了在代码中包含迁移的结论。这很有效并且提供了更多的控制权。
另外你在生产中可能要进行数据迁移,不推送代码你会怎么做?
【讨论】:
以上是关于在 Django 中处理生产迁移和开发迁移的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Hibernate 在 Spring Boot 中处理数据库迁移?