PaiGram/alembic
2023-12-27 14:41:42 +08:00
..
versions 🐛 changing server default task.time_created to CURRENT_TIMESTAMP 2023-11-23 00:57:09 +08:00
env.py 🐛 Fix SQLAlchemy URL Passing Error 2023-12-27 14:41:42 +08:00
README.md 使用 alembic 管理数据库版本 2022-09-04 13:52:33 +08:00
script.py.mako 使用 alembic 管理数据库版本 2022-09-04 13:52:33 +08:00

alembic 目录

说明

该目录包含 SQLAlchemy 数据库版本管理工具 alembic 的迁移脚本migrations

这里数据库版本指的是本项目的数据库表结构,并不是 MySQL 版本。

常用功能

1. 升级版本

拉取代码以后,如果发现有新的 alembic/versions/xxxxxxx.py,执行命令进行数据库迁移。

# 检查将要执行的 SQL
alembic upgrade head --sql
# 执行升级 SQL
alembic upgrade head

2. 创建一个迁移版本(自动)

新增或修改 Model 以后运行下面的命令alembic 将自动比较 model 定义和本地数据库的差异,然后创建一个新的迁移脚本

# 举例:新增 Model
class User(SQLModel, table=True):
    __table_args__ = dict(mysql_charset='utf8mb4', mysql_collate="utf8mb4_general_ci")

    id: int = Field(primary_key=True)
    name: str = Field()
# 引号内是本次迁移的名字,类似 git commit message 请保持可读性
alembic revision --autogenerate -m "add_xxx_to_xxx_table"

创建以后,可以使用 black 或其他工具格式化迁移脚本,然后执行升级

3. 创建一个迁移版本(手动)

手动写迁移脚本,一般用于修改数据的情况,比如新增了一个字段,需要从其他表把数据读到新字段里。

alembic revision -m "add_xxx_to_xxx_table"

通常情况下,如果上线后升级版本出错,不建议使用数据库降级命令,数据库降级难以管理,建议另外写一个迁移脚本进行手动降级