6.1 KiB
Aerich
Introduction
Aerich is a database migrations tool for Tortoise-ORM, which like alembic for SQLAlchemy, or Django ORM with it's own migrations solution.
Important: You can only use absolutely import in your models.py
to make aerich
work.
Install
Just install from pypi:
> pip install aerich
Quick Start
> 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.
inspectdb Introspects the database tables to standard output as...
migrate Generate migrate changes file.
upgrade Upgrade to latest version.
Usage
You need add aerich.models
to your Tortoise-ORM
config first, example:
TORTOISE_ORM = {
"connections": {"default": "mysql://root:123456@127.0.0.1:3306/test"},
"apps": {
"models": {
"models": ["tests.models", "aerich.models"],
"default_connection": "default",
},
},
}
Initialization
> 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.
Init config file and location:
> aerich init -t tests.backends.mysql.TORTOISE_ORM
Success create migrate location ./migrations
Success generate config file aerich.ini
Init db
> aerich init-db
Success create app migrate location ./migrations/models
Success generate schema for app "models"
If your Tortoise-ORM app is not default models
, you must specify
--app
like aerich --app other_models init-db
.
Update models and make migrate
> aerich migrate --name drop_column
Success migrate 1_202029051520102929_drop_column.sql
Format of migrate filename is
{version_num}_{datetime}_{name|update}.sql
.
And if aerich
guess you are renaming a column, it will ask Rename {old_column} to {new_column} [True]
, you can
choice True
to rename column without column drop, or choice False
to drop column then create.
Upgrade to latest version
> aerich upgrade
Success upgrade 1_202029051520102929_drop_column.sql
Now your db is migrated to latest.
Downgrade to specified version
> aerich init -h
Usage: aerich downgrade [OPTIONS]
Downgrade to specified version.
Options:
-v, --version INTEGER Specified version, default to last. [default: -1]
-d, --delete Delete version files at the same time. [default:
False]
--yes Confirm the action without prompting.
-h, --help Show this message and exit.
> aerich downgrade
Success downgrade 1_202029051520102929_drop_column.sql
Now your db rollback to specified version.
Show history
> aerich history
1_202029051520102929_drop_column.sql
Show heads to be migrated
> aerich heads
1_202029051520102929_drop_column.sql
Inspect db tables to TortoiseORM model
Usage: aerich inspectdb [OPTIONS]
Introspects the database tables to standard output as TortoiseORM model.
Options:
-t, --table TEXT Which tables to inspect.
-h, --help Show this message and exit.
Inspect all tables and print to console:
aerich --app models inspectdb -t user
Inspect a specified table in default app and redirect to models.py
:
aerich inspectdb -t user > models.py
Note that this command is restricted, which is not supported in some solutions, such as IntEnumField
and ForeignKeyField
and so on.
Multiple databases
tortoise_orm = {
"connections": {
"default": expand_db_url(db_url, True),
"second": expand_db_url(db_url_second, True),
},
"apps": {
"models": {"models": ["tests.models", "aerich.models"], "default_connection": "default"},
"models_second": {"models": ["tests.models_second"], "default_connection": "second", },
},
}
You need only specify aerich.models
in one app, and must specify --app
when run aerich migrate
and so on.
Support this project
AliPay | WeChatPay | PayPal |
---|---|---|
![]() |
![]() |
PayPal to my account long2ice. |
License
This project is licensed under the Apache-2.0 License.