迁移¶
本文档介绍如何使用 Aerich 进行迁移。
你可以参阅 https://github.com/tortoise/aerich 了解更多详情。
快速入门¶
> aerich -h
Usage: aerich [OPTIONS] COMMAND [ARGS]...
Options:
-c, --config TEXT Config file. [default: aerich.ini]
--app TEXT Tortoise-ORM app name. [default: models]
-n, --name TEXT Name of section in .ini file to use for aerich config.
[default: aerich]
-h, --help Show this message and exit.
Commands:
downgrade Downgrade to specified version.
heads Show current available heads in migrate location.
history List all migrate items.
init Init config file and generate root migrate location.
init-db Generate schema and generate app migrate location.
migrate Generate migrate changes file.
upgrade Upgrade to latest version.
用法¶
首先需要将 aerich.models 添加到你的 Tortoise-ORM 配置中,例如
TORTOISE_ORM = {
"connections": {"default": "mysql://root:123456@127.0.0.1:3306/test"},
"apps": {
"models": {
"models": ["tests.models", "aerich.models"],
"default_connection": "default",
},
},
}
初始化¶
> aerich init -h
Usage: aerich init [OPTIONS]
Init config file and generate root migrate location.
Options:
-t, --tortoise-orm TEXT Tortoise-ORM config module dict variable, like settings.TORTOISE_ORM.
[required]
--location TEXT Migrate store location. [default: ./migrations]
-h, --help Show this message and exit.
初始化配置文件和位置
> aerich init -t tests.backends.mysql.TORTOISE_ORM
Success create migrate location ./migrations
Success generate config file aerich.ini
初始化数据库¶
> aerich init-db
Success create app migrate location ./migrations/models
Success generate schema for app "models"
如果你的 Tortoise-ORM 应用程序不是默认的 models,则必须指定 –app,例如 aerich –app other_models init-db。
更新模型并进行迁移¶
> aerich migrate --name drop_column
Success migrate 1_202029051520102929_drop_column.json
迁移文件名的格式为 {version_num}_{datetime}_{name|update}.json。
如果 aerich 猜测你正在重命名列,它将询问 将 {old_column} 重命名为 {new_column} [True],你可以选择 True 在不删除列的情况下重命名列,或选择 False 删除列然后创建。
如果你使用 MySQL,只有 MySQL8.0+ 支持 rename..to 语法。
升级到最新版本¶
> aerich upgrade
Success upgrade 1_202029051520102929_drop_column.json
现在你的数据库已迁移到最新版本。
降级到指定版本¶
> aerich init -h
Usage: aerich downgrade [OPTIONS]
Downgrade to specified version.
Options:
-v, --version INTEGER Specified version, default to last. [default: -1]
-h, --help Show this message and exit.
> aerich downgrade
Success downgrade 1_202029051520102929_drop_column.json
现在你的数据库已回滚到指定版本。
显示历史记录¶
> aerich history
1_202029051520102929_drop_column.json
显示待迁移的头¶
> aerich heads
1_202029051520102929_drop_column.json