title: Tortoise-ORM与FastAPI集成:异步模型定义与实践
date: 2025/04/20 11:38:23
updated: 2025/04/20 11:38:23
author: cmdragon
excerpt:
Tortoise-ORM通过类继承方式定义数据模型,每个模型类对应数据库中的一张表。模型字段类型与数据库类型自动映射,支持主键、唯一约束、索引等配置。模型间通过外键建立关联,支持异步查询和CRUD操作。FastAPI集成时,通过register_tortoise
初始化数据库连接,并结合Pydantic模型实现数据验证。常见错误包括字段验证失败和数据库连接超时,可通过中间件和连接池配置解决。
categories:
- 后端开发
- FastAPI
tags:
- Tortoise-ORM
- FastAPI
- 异步数据库
- 模型定义
- 数据库配置
- CRUD接口
- 错误处理


扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长
第一章 Tortoise-ORM异步模型定义基础
1.1 模型类创建方法
在FastAPI项目中,数据模型是连接业务逻辑与数据库的核心枢纽。Tortoise-ORM采用类继承方式定义模型,每个模型类对应数据库中的一张表。以下是用户模型的完整示例:
from tortoise.models import Model
from tortoise import fields
class User(Model):
id = fields.IntField(pk=True) # 主键字段,自动递增
username = fields.CharField(max_length=50, unique=True) # 唯一用户名
email = fields.CharField(max_length=100, index=True) # 带索引的邮箱字段
created_at = fields.DatetimeField(auto_now_add=True) # 自动记录创建时间
is_active = fields.BooleanField(default=True) # 账户激活状态
credit = fields.DecimalField(max_digits=10, decimal_places=2, default=0.0) # 精确数值存储
class Meta:
table = "auth_users" # 自定义表名
ordering = ["-created_at"] # 默认排序规则
该模型在数据库中会生成如下结构的表(以PostgreSQL为例):
CREATE TABLE auth_users
(
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(