Tortoise-ORM 快速入门:更符合 Python 直觉的异步数据库操作
📂 所属阶段:第三阶段 — 数据持久化(数据库篇)
🔗 相关章节:SQLAlchemy 2.0 实战 · Redis 集成 · FastAPI 路由
1. 为什么选它?别纠结 SQLAlchemy 了
如果说 SQLAlchemy 是数据库界的「瑞士军刀」,Tortoise-ORM 就是给 Python 开发者定制的「智能折叠剪」——小巧、直观、上手即剪,剪中小型项目/快速原型特别顺。
1.1 一分钟对比 SQLAlchemy 2.0
1.2 一键装完开发环境
选你常用的数据库依赖就行,别全装!
2. 初始化:写两个文件就能跑
2.1 先搞配置文件 tortoise_config.py
把连接参数、模型模块放在这里,和代码逻辑分开:
2.2 再在 FastAPI 里「挂」上去
FastAPI 社区专门做了 register_tortoise 工具,一键解决启动/关闭连接、自动建表:
3. 模型定义:和写 Django ORM 一模一样
新建 demo_models.py,放几个经典的「博客类」模型——外键、多对多、自动时间戳全涵盖:
4. CRUD 实战:异步操作就是加个 await
所有数据库操作必须加 await,放在异步函数里执行。我们先写几个「纯 Tortoise」的操作示例,再套 FastAPI 路由。
4.1 创建(Create)
4.2 读取(Read)
关键原则:如果要查关联数据,必须用 prefetch_related 提前加载,不然会触发「N+1 查询」(性能杀手)。
4.3 更新(Update)
4.4 删除(Delete)
5. 套 FastAPI 路由:5分钟写完完整接口
把刚才的操作和 Pydantic 模型绑定,一个可测试的 REST API 就出来了:
6. 总结:速查表+适用场景
6.1 5分钟速查
6.2 什么时候选 Tortoise-ORM?
✅ 推荐场景:
- 喜欢 Django ORM,不想学新东西
- 中小型项目、快速原型、MVP
- 搭配 FastAPI/Starlette 做异步服务
❌ 不推荐场景:
- 大型企业级系统、需要超精细 SQL 控制
- 已有复杂的 SQLAlchemy 代码库
- 数据库需要复杂的自定义迁移
🔗 扩展资源

