python - Django 和缓慢的迁移 : how to quickly get an empty database?

标签 python mysql django testing database-migration

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

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

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

我们使用标准的manage.py 测试 方法,因此使用--keepdb 可能不是一个选项 对我来说。 (即便如此,每次运行我也必须至少支付一次迁移费用。)

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

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

最佳答案

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

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

python manage.py test --nomigrations

python manage.py test -n

而且它很管用。

关于python - Django 和缓慢的迁移 : how to quickly get an empty database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33740281/

相关文章:

python - 获取当前用户和 Python 中所有用户的环境变量

python - 异常值: cannot import name TimeoutStateError when import Geocoder

mysql - 如何将数据库与 EJB 实体 bean 连接

mysql - 创建存储过程 phpmyadmin

java - 即使该列存在,我也会收到未找到列的异常

python - 在特定时间为 Django/Python 调用方法?

python - 如何使用 django rest 框架注册/登录

python - 如何在Django中获取过滤器键和结果元组

python - 如何右键保存图片或文件?

python - 无法在 Heroku 上上传我的 Flask 应用程序