python - 使用新的初始迁移来压缩迁移

标签 python django migration squash

我有一个包含 35 个迁移的应用程序,需要一段时间才能运行(例如在测试之前),所以我想压缩它们。

squashmigrations 命令将操作次数从 99 次减少到 88 次,但仍远未达到最佳状态。这可能是由于我有多个 RunPython 操作阻止 Django 优化其他操作。所有这些 RunPython 操作在压缩迁移中都是无用的,因为数据库是空的。在 Django 1.10 中,elidable 参数将允许在这种情况下跳过它们,但仍然存在很多困惑。

我对压缩迁移的想法更接近 Django 生成的初始迁移,因此我的问题是:

是否建议使用新的初始迁移作为一长串迁移的压缩版本?你会怎么做?

最佳答案

如果您的测试或生产数据库中没有任何重要数据,您可以使用全新的初始迁移,这将是合适的解决方案。

我已经多次使用这个技巧,它对我很有效。

一些想法:

  • 有时,您首先需要为一个本地应用程序创建迁移,然后再为所有其他应用程序创建迁移;

  • 为了确保一切正常,您可以在使用空数据库运行 ./migrate 之前提交迁移并备份数据库。

注意:为了加快测试速度,您可以尝试在内存中运行测试和/或在可能的情况下使用 sqlite 运行测试。

关于python - 使用新的初始迁移来压缩迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38413099/

相关文章:

python - 使用 pyodbc cursor.executemany() 时如何获得正确的行数

python - 设置(过滤器)重复

python - 请提供引擎值 Django 数据库配置

django - 通过 node.js 向 Django Web API 发送 HTTP POST 是否高效?

python - 如何删除列表[:] works

python - 在 Linux/Windows 上制作 GUI 应用程序。使用什么语言/工具?

django - ModuleNotFoundError : No module named 'wsgi'

MySQL 5 to 8 query migration (rewrite) - 表达式中的变量

php - 更新表模式而不影响 Laravel 中的数据

ruby-on-rails - Rails 迁移 - Mysql2::错误:指定的 key 太长;最大 key 长度为 767 字节