MibooGram/alembic/README.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

51 lines
1.6 KiB
Markdown
Raw Normal View History

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