Django反向migration数据库

Django反向migration数据库

最近接手了一个django项目,由于之前的开发者经常手动修改表结构,导致django的migrations和数据库无法保持一致。想要彻底解决一下这个历史遗留问题。

思路

  • 将现有数据库结构反向migration为model文件
  • 删除现在所有app下的migrations文件
  • 采集生成的model文件的migrations,migrate但是不应用

生成model文件

下面我使用的django项目名称为hello_world, 使用的setting文件为settings_dev

这里将数据库结构生成的model文件存储在test_models.py这个文件中

python manage.py inspectdb --settings=hello_world.settings_dev > test_models.py

然后从test_models.py中把格子对应的app的model替换到models.py

删除旧的migrations文件

将各app下的migrations文件删除,包括__pycache__文件夹
之后来到数据库执行

delete from django_migrations

将之前的migrations记录删除

生成新的migrations文件

来到django项目根目录,执行

python manage.py makemigrations --settings=hello_world.settings_dev

根据models生成新的migrations文件

然后migrate,但不应用修改

python manage.py migrate --fake-initial --settings=hello_wrold.settings_dev

到这个时候为止,django项目将会应用数据库的结构,并且会有新的migrations文件

接下来修改数据库就可以直接python manage.py makemigrationspython manage.py migrate这两条命令修改了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容