Skip to content

Django 数据库迁移操作的回滚

752字约3分钟

PythonDjango

2022-07-21

Django 数据库的迁移通过 makemigrationsmigrate 命令实现,其中 makemigrations 基于 models.py 的变更生成新的 migrations 文件, migratemigrations文件应用到数据库,也可以取消已应用的 migrations 文件。

Django 的数据库迁移操作

  1. 在 app 目录下的 models.py 文件中新增 class。

    Snipaste_2022-07-21_19-00-48

  2. 执行 makemigrations 命令生成迁移文件。

    Snipaste_2022-07-21_19-01-42

  3. 使用 migrate 应用迁移文件。

    Snipaste_2022-07-21_19-01-53

    Django 迁移数据库后,会在 django_migrations 表中做记录,查询该表发现应用 myblog 最新的迁移 0002_test 已经被应用。

    Snipaste_2022-07-21_19-03-52

使用 migrate 命令实现数据迁移的回滚

使用 migrate 回滚最近一次迁移操作

应用 myblog 共有两次迁移操作,分别是:0001_initial和0002_test,使用 migrate 命令指定应用 myblog 以及 0001

python manage.py migrate myblog 0001

Snipaste_2022-07-21_19-05-03

命令执行成功后,查询 django_migrations 表的记录,此时数据库表中仅有 0001 的记录,迁移回滚操作成功。

Snipaste_2022-07-21_19-05-28

使用 migrate 回滚应用所有的迁移操作

执行 makemigrationsmigrate 命令,执行数据库的迁移操作。

Snipaste_2022-07-21_19-06-39

执行完成后,django_migrations 表出现 0002 迁移的记录。

Snipaste_2022-07-21_19-07-15

使用 migrate 命令指定应用 myblog ,并指定要回滚的操作为 zero。

python manage.py migrate zero

Snipaste_2022-07-21_19-08-05

查看 django_migrations 表,无应用 myblog 的迁移记录,数据库迁移回滚操作成功。

Snipaste_2022-07-21_19-08-15