Django和缓慢的迁移:如何快速获得一个空的数据库?

900*_*000 4 python mysql testing django database-migration

我有一个Django 1.8代码库,有14个应用程序和~90个表.大多数应用都有1-2次迁移.

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

但是,创建数据库并将SQL转储导入其中需要1-2秒才能实现相同的数据库状态.

我们没有使用标准manage.py test方法,因此使用--keepdb可能适合我.(即便如此,每次运行至少需要支付一次迁移费用.)

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

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

小智 8

有一个很好的应用程序称为django-test-without-migrations https://pypi.python.org/pypi/django-test-without-migrations/.它可以满足您的需求:使用最新的模型定义创建数据库.

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

python manage.py test --nomigrations
Run Code Online (Sandbox Code Playgroud)

要么

python manage.py test -n
Run Code Online (Sandbox Code Playgroud)

它只是有效.