当前位置: 首页 > news >正文

FastAPI系列(16):ORM创建模型类

 

本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/19503695 

Tortoise ORM简介

官网:https://tortoise.org.cn/

源代码:https://github.com/tortoise/tortoise-orm/

Tortoise ORM 是一款为 Python 异步编程(Asyncio)设计的 ORM(对象关系映射)工具,它的设计灵感来自 Django ORM,语法风格也和 Django ORM 非常相似,但完全适配异步场景(比如 FastAPI、Starlette 等异步 Web 框架),可以让你用面向对象的方式操作数据库,无需直接编写 SQL 语句。

简单来说:
  • 核心特点:纯异步、支持多种数据库(PostgreSQL、MySQL、SQLite)、语法接近 Django ORM(学习成本低)、支持迁移(migrations)、类型提示友好。
  • 适用场景:异步 Python 项目(如 FastAPI 接口开发),替代同步 ORM(如 SQLAlchemy 同步版、Django ORM)。

安装

参考:https://tortoise.org.cn/getting_started.html

安装 tortoise:pip install tortoise-orm

您还可以使用您的数据库驱动程序进行安装,对于 MySQL:pip install tortoise-orm[asyncmy]

参考:GitHub - tortoise/tortoise-orm: Familiar asyncio ORM for python, built with relations in mind

image

 

创建模型类

1.主表

  • Student:学生表
  • Course:课程表
  • Clas:班级表
  • Teacher:教师表

2. 关联表

  • Student_course:学生与课程的多对多关系表

 

目录结构

image

 

models.py
# 选课
from tortoise import fields
from tortoise.models import Modelclass Student(Model):id = fields.IntField(pk=True, description="主键")name = fields.CharField(max_length=32, description="姓名")pwd = fields.CharField(max_length=32, description="密码")sno = fields.IntField(description="学号")# 一对多的关系clas = fields.ForeignKeyField("models.Clas", related_name="students")  # 最后数据库中字段是clas_id,如果这里我们直接写成clas_id,最后数据库中是clas_id_id# 多对多的关系courses = fields.ManyToManyField("models.Course", related_name="students", description='学生选课表')  # 生成的表名是student_course,字段是student_id、course_idclass Course(Model):id = fields.IntField(pk=True)name = fields.CharField(max_length=32, description="课程名称")teacher = fields.ForeignKeyField("models.Teacher", related_name='courses', description='课程讲师表')# addr = fields.CharField(max_length=32, description="教室", default="")# desc = fields.CharField(max_length=32, description="教室信息", default="")class Clas(Model):id = fields.IntField(pk=True)name = fields.CharField(max_length=32, description="班级名称")class Teacher(Model):id = fields.IntField(pk=True)name = fields.CharField(max_length=32, description="姓名")pwd = fields.CharField(max_length=32, description="密码")tno = fields.IntField(description="老师编号")

 

 
http://www.jsqmd.com/news/313842/

相关文章:

  • 2026必备10个降AIGC工具,专科生速看!
  • 2026必备!8个一键生成论文工具,专科生轻松搞定毕业论文!
  • 【LeetCode刷题】LRU缓存
  • 神奇的环境变量
  • 基于Springboot+Vue的林业资源管理系统源码文档部署文档代码讲解等
  • 肝了整整90天!我把RK3588 Android开发做成了完整教程
  • 基于Springboot+Vue的旅游信息咨询网站的设计与实现源码文档部署文档代码讲解等
  • 基于Springboot+Vue的美食分享平台系统源码文档部署文档代码讲解等
  • 基于Springboot+Vue的民间救援队救助系统源码文档部署文档代码讲解等
  • 《P4035 [JSOI2008] 球形空间产生器》
  • “梦回汉唐”汉服商城网站的设计与实现(11823)
  • jspm“众优”大学生家教平台的设计与实现(11824)
  • 基于JSP的校园宿舍电费缴纳系统(11825)
  • “多鱼”旧物交易平台的设计与实现(11821)
  • “毛毛宠物店”宠物信息交流平台的设计与实现(11822)
  • Thinkphp和Laravel基于的农产品预售商城 平台设计_v8557农户_
  • 【GitHub项目推荐--Remotion Skills:AI代理技能框架】⭐⭐⭐
  • Thinkphp和Laravel日常办公用品打印机耗材商城直售推荐购物系统的设计与实现_02i27_
  • Thinkphp和Laravel汽车丢失车辆高速收费管理系统 车联网位置信息管理软件的设计与实现_
  • Thinkphp和Laravel物流仓储进销存信息运输管理系统_ho5g5_
  • 彻底告别 WinForms SOP 开发的“老大难”!
  • Thinkphp和Laravel基于Hadoop的高校固定资产租赁管理系统研究与实现_hot14_
  • Thinkphp和Laravel基于VUE敬老院管理系统养老院_35806vue
  • Thinkphp和Laravel基于Web的铁路火车票订票管理系统_w8iq4_
  • AI元人文:价值纠缠与规则涌现
  • 2026毕设ssm+vue旅游计划app论文+程序
  • 2026毕设ssm+vue旅游服务与管理论文+程序
  • 2026毕设ssm+vue旅游攻略网站系统论文+程序
  • 深入解析:芯谷科技--高效PWM控制降压型LED驱动器,点亮智能照明未来D3812
  • 2026最新日用香精品牌top5推荐!广东优质日用香精厂家助力高品质香氛体验