MibooGram/alembic/README.md
2022-09-04 13:52:33 +08:00

51 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# alembic 目录
## 说明
该目录包含 [SQLAlchemy](https://www.sqlalchemy.org/) 数据库版本管理工具 [alembic](https://alembic.sqlalchemy.org/) 的迁移脚本migrations
这里数据库版本指的是本项目的数据库表结构,并不是 MySQL 版本。
## 常用功能
### 1. 升级版本
拉取代码以后,如果发现有新的 `alembic/versions/xxxxxxx.py`,执行命令进行数据库迁移。
``` shell
# 检查将要执行的 SQL
alembic upgrade head --sql
# 执行升级 SQL
alembic upgrade head
```
### 2. 创建一个迁移版本(自动)
新增或修改 Model 以后运行下面的命令alembic 将自动比较 model 定义和本地数据库的差异,然后创建一个新的迁移脚本
```python
# 举例:新增 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()
```
``` shell
# 引号内是本次迁移的名字,类似 git commit message 请保持可读性
alembic revision --autogenerate -m "add_xxx_to_xxx_table"
```
创建以后,可以使用 `black` 或其他工具格式化迁移脚本,然后执行升级
### 3. 创建一个迁移版本(手动)
手动写迁移脚本,一般用于修改数据的情况,比如新增了一个字段,需要从其他表把数据读到新字段里。
``` shell
alembic revision -m "add_xxx_to_xxx_table"
```
> 通常情况下,如果上线后升级版本出错,不建议使用数据库降级命令,数据库降级难以管理,建议另外写一个迁移脚本进行手动降级