管理数据库

已完成

你不仅可以使用 Django ORM 与数据交互。 还可以通过“迁移”过程将其用于创建和更新数据库。

迁移

迁移是要对数据库的架构执行的更新集合。 数据库架构是数据库本身的定义,包括所有表和列,以及这些表之间的关系。

创建模型并定义字段后,我们还定义了表、列以及这些表之间的关系。 我们通过创建模型创建了架构定义!

当模型更改时,迁移用于创建和更新数据库。 正如你所知,软件在不断发生更改。 现在定义模型的方式可能不同于以往。 迁移将更新数据库的过程抽象化。 然后我们可以对模型进行更改,并使用 Django 对数据库执行必要的更改。

执行迁移

要创建迁移,请使用 manage.py 中的 makemigrations 命令。 makemigrations 使用当前的迁移列表获取起点,然后使用模型的当前状态确定增量(需要进行的更改)。 然后它会生成更新数据所需的代码。 makemigrations 运行后,会显示迁移的名称。

python manage.py makemigrations

显示迁移的 SQL

发生在关系数据库中的任何操作都需要结构化查询语言 (SQL)。 Django 的迁移在运行时会生成相应 SQL。 虽然你可以使用迁移工具直接更新数据库,但在某些环境中可能有为你管理该过程的数据库管理员。

要生成合适的 SQL 语句,请使用 sqlmigrate

python manage.py sqlmigrate <app_label> <migration_name>

备注

app_label 部分是应用的名称,通常是包含应用的文件夹的名称。 migration_name 部分是迁移的名称。 你还可以在应用的迁移文件夹中,查看其迁移的 Python 代码。

显示迁移列表

要查看所有迁移,请使用 showmigrations

python manage.py showmigrations

执行迁移

migrate 命令对在项目文件夹的根中的 settings.py 中配置的数据库运行特定迁移或所有迁移。

如果打开 settings.py,你会在底部看到 DATABASES 部分。 此部分包含 default 选项,该选项在新项目上被配置为使用 SQLite。 你可以根据需要在此部分中配置不同的数据库连接字符串。

python manage.py migrate <app_label> <migration_name>

备注

app_labelmigration_name 部分是可选的。 如果未提供其中任一部分,则将运行所有迁移。 你将在开发过程中经常使用此命令。