django - 在生产环境中执行彻底的 Django 模型迁移的明智方法是什么?

标签 django deployment django-models

我有一个正在使用的现有 Django 网络应用程序。我必须从根本上将我设计中的一个关键模型迁移到一个全新的设计,但我想缓存该模型的所有现有数据,并在准备部署时将它们迁移到生产中的新记录。

我有能力在一个晚上将我的网站关闭几个小时,然后做任何我需要做的事情来迁移。我可以通过哪些明智的方式进行此迁移?

似乎任何迁移都需要: 1) 将所有现有数据转储为某种格式,例如 SQL、JSON、XML 2) 将模型迁移到新格式 3) 使用转换脚本将数据重新加载到新模型

我还考虑过尝试将所有现有数据存储在其他名为“OldModel”的模型中(如果 Model 是现有模型的名称),然后实时迁移数据。

最佳答案

我听说有一个帮助迁移的项目:South .

话虽如此,我承认我们没有使用过它。我们仍然使用 SQL 语句文件来计划我们的迁移。疯狂,我知道,但它具有可测试性的优势。在“大部署”之前的开发和暂存测试期间,您可以根据需要多次运行它。它可以是源代码控制的、差异化的等。因此,它也可以从更大的部署脚本中调用。当然,我们在运行之前备份生产:-)

如果您的数据库进行日志记录,那么使用老式方法还有一个额外的优势,即存在可以回滚的事务历史记录。

我们使用 JSON、XML 和“OldModel”->“NewModel”样式转储进行的实验的扩展性很差。请注意,YMMV...我们有一个相当大的数据库。通过使用脚本,您可以在生产数据库上运行,而无需卸载或重新加载大量数据。这样,即使是复杂的迁移也只需几秒钟,而不是几小时。

关于django - 在生产环境中执行彻底的 Django 模型迁移的明智方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/663698/

相关文章:

python - 我在 virtualenv 中安装的 Django 缺少管理模板文件夹

angular - 使用 Azure Web 应用部署 Angular 2

python - 将呈现的 pdf 文件保存到模型字段 Django

python - OneToThree django模型

python - Django 1.7 : how to make ManyToManyField required?

python - 在 Windows 上使用 cookiecutter 创建 Django 项目模板

asp.net - 发布 ASP.Net Web 应用程序时,如何排除目标文件夹的删除?

python - 除了 zc.buildout 和/或 virtualenv 之外,还有其他好的替代方法来安装非 python 依赖项吗?

django - 在不执行 select 的情况下插入 django 多对多表

python-3.x - 如何更改 Django REST 框架中 URL 中的默认搜索查询参数?