使用新的初始迁移来挤压迁移

时间:2016-07-16 16:19:09

标签: python django migration squash

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

我经常使用这个技巧,它对我有用。

一些想法:

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

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

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