【问题标题】:Django and slow migrations: how to quickly get an empty database?Django 和缓慢的迁移:如何快速获取空数据库?
【发布时间】:2016-02-17 20:10:41
【问题描述】:

我有一个 Django 1.8 代码库,其中包含 14 个应用程序和约 90 个表。大多数应用都有 1-2 次迁移。

我注意到运行测试套件所花费的大部分时间都花在了应用迁移上。将所有迁移应用到空数据库可能需要 5 分钟以上的时间。

不过,创建数据库并将 SQL 转储导入其中以实现相同的数据库状态需要 1-2 秒。

我们使用标准的manage.py test 方法,所以使用--keepdb 可能对我来说不是一个选项。 (即使是这样,我每次运行至少要为迁移付出一次代价。)

我正在寻找一种根据最新模型定义创建空数据库的方法。例如,进行初始迁移就好像所有其他迁移都不存在会产生正确的效果。

有没有已知的方法来实现这一点?或者,是否有另一种众所周知的方法来解决在测试期间迁移需要很长时间的问题?

【问题讨论】:

标签: python mysql django testing database-migration


【解决方案1】:

有一个不错的应用程序叫做 django-test-without-migrations https://pypi.python.org/pypi/django-test-without-migrations/。它只是你想要的:使用最新的模型定义创建数据库。

安装和配置后(非常简单),您只需运行

python manage.py test --nomigrations

python manage.py test -n

而且它很简单。

【讨论】:

    猜你喜欢
    • 2017-05-06
    • 2015-10-07
    • 2012-07-26
    • 2020-08-24
    • 2018-03-04
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多