Django migrate规范
概述
Django的数据库相关的迁移操作,大体包括makemigrations和migrate两个步骤。
- 生成迁移文件
修改models - 添加一个field或者删除一个model - 然后运行makemigrations:
$ python manage.py makemigrations
Migrations for 'books':
books/migrations/0003_auto.py:
- Alter field author on book
在所有迁移文件过程中,models将扫描并比较最近的版本文件,然后生成一系列新的migrations。然而这个迁移命令并不完美,有些复杂情况可能没有处理好导致迁移失败。最好,可以去检查下migrations,新的改变会不会导致冲突。
- 迁移数据
一旦生成了新的迁移文件,为了迁移作用于数据库,应该执行以下指令:
$ python manage.py migrate
Operations to perform:
Apply all migrations: books
Running migrations:
Rendering model states... DONE
Applying books.0003_auto... OK
还可以为migration(s),取个名字–name,并且可以指定某个app your_app_label:
$ python manage.py makemigrations --name changed_my_model your_app_label
- 查看迁移状态 - 在数据库中,已经生效的[X] ,还未生效的[ ]
F:\experiments\my_blog>python manage.py showmigrations
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X