fastapi aerich
时间: 2025-05-21 20:31:29 浏览: 11
### FastAPI 中使用 Aerich 进行数据库迁移的设置与使用
Aerich 是一个用于 Tortoise-ORM 的 Alembic 替代工具,支持异步 ORM 数据库迁移。以下是关于如何在 FastAPI 项目中集成并使用 Aerich 来管理数据库迁移的相关说明。
#### 安装依赖
首先,在项目的环境中安装所需的依赖项:
```bash
pip install fastapi uvicorn tortoise-orm aerich
```
#### 配置 Tortoise-ORM 和 Aerich
Tortoise-ORM 是 Aerich 所基于的 ORM 工具。为了使两者协同工作,需正确配置 `tortoise_orm` 设置:
创建一个名为 `config.py` 或类似的文件来定义数据库连接参数以及模型路径:
```python
from typing import Dict, Any
TORTOISE_ORM: Dict[str, Any] = {
"connections": {"default": "sqlite://db.sqlite3"}, # SQLite 示例;可以替换为其他数据库 URL
"apps": {
"models": {
"models": ["app.models", "aerich.models"], # 添加应用中的模型模块和默认的 Aerich 模型
"default_connection": "default",
}
},
}
```
在此处,“`app.models`”应指向实际存储数据表模型的位置。
#### 初始化 Aerich 并生成初始迁移脚本
运行以下命令初始化 Aerich,并为其提供必要的信息以便跟踪更改:
```bash
aerich init --tortoise-config config.py
aerich init-db
```
第一条指令会建立一个新的目录结构用来保存版本历史记录和其他元数据;第二条则依据现有模式构建首个基线状态。
当有新的字段被加入到某个类或者整个新实体被引入时,则再次执行下面的操作以反映这些改动至物理层面上去。
```bash
aerich migrate
aerich upgrade
```
以上过程实现了从逻辑设计图谱向具体关系型储存介质转化的功能[^1]。
#### 实际案例展示
假设我们有一个简单的 User 表格定义如下所示:
```python
# app/models.py
from tortoise import Model, fields
class User(Model):
id = fields.IntField(pk=True)
username = fields.CharField(max_length=50, unique=True)
password_hash = fields.CharField(max_length=128)
class Meta:
table = 'users'
def __str__(self):
return self.username
```
完成上述步骤之后就可以通过标准流程来进行后续操作了。
阅读全文
相关推荐

















