# 数据库迁移指南

本项目使用 Alembic 进行数据库版本控制和迁移管理。

## 使用 db_migrate.py 脚本

本项目提供了 `db_migrate.py` 辅助脚本，简化了数据库迁移操作。推荐使用此脚本而不是直接使用 alembic 命令。

### 创建新迁移

自动生成迁移脚本（根据模型变更）：

```bash
python db_migrate.py create "描述迁移内容"
```

手动创建空白迁移脚本：

```bash
python db_migrate.py create "描述迁移内容" --manual
```

### 执行迁移

升级到最新版本：

```bash
python db_migrate.py upgrade
```

升级指定版本：

```bash
python db_migrate.py upgrade <版本号>
```

### 降级迁移

降级到上一版本：

```bash
python db_migrate.py downgrade
```

降级到指定版本：

```bash
python db_migrate.py downgrade <版本号>
```

### 标记数据库版本

将数据库标记为指定版本（不执行实际迁移）：

```bash
python db_migrate.py stamp head
```

这在从SQL备份恢复数据库后特别有用，可以避免重复执行迁移。

### 查看迁移信息

查看当前版本：

```bash
python db_migrate.py current
```

查看迁移历史：

```bash
python db_migrate.py history
```

### 执行SQL语句

直接执行SQL语句：

```bash
python db_migrate.py sql "SQL语句"
```

## 原始 Alembic 命令参考

以下是直接使用 Alembic 的命令，仅供参考。建议优先使用上述 `db_migrate.py` 脚本。

### 创建新迁移

自动生成迁移脚本（根据模型变更）：

```bash
alembic revision --autogenerate -m "描述迁移内容"
```

手动创建空白迁移脚本：

```bash
alembic revision -m "描述迁移内容"
```

### 执行迁移

升级到最新版本：

```bash
alembic upgrade head
```

升级指定版本：

```bash
alembic upgrade <版本号>
```

升级指定步数：

```bash
alembic upgrade +<步数>
```

### 降级迁移

降级到上一版本：

```bash
alembic downgrade -1
```

降级到指定版本：

```bash
alembic downgrade <版本号>
```

降级指定步数：

```bash
alembic downgrade -<步数>
```

### 查看迁移信息

查看当前版本：

```bash
alembic current
```

查看迁移历史：

```bash
alembic history
```

查看特定迁移的SQL：

```bash
alembic upgrade <版本号>:head --sql
```

## 迁移工作流

1. 修改 SQLAlchemy 模型
2. 生成迁移脚本 `python db_migrate.py create "描述变更"`
3. 检查生成的脚本是否正确
4. 应用迁移 `python db_migrate.py upgrade`
5. 提交迁移脚本到版本控制系统
