
























本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/19503695
main.py
import uvicorn
from fastapi import FastAPI
from tortoise.contrib.fastapi import register_tortoise
from test_orm.api.student import student_api
from test_orm.settings import TORTOISE_ORM
app = FastAPI()
app.include_router(student_api, prefix="/student", tags=["学生接口"])
# register_tortoise是注册函数,fastapi一旦运行,register_tortoise已经执行,通过传递进去的app对象,监听服务启动和终止事件
register_tortoise(
app=app,
config=TORTOISE_ORM,
)
if __name__ == '__main__':
uvicorn.run('main:app', host='127.0.0.1', port=8001, reload=True, workers=1)
from typing import List
from fastapi import APIRouter
from pydantic import BaseModel, field_validator
from test_orm.models import Student, Course
student_api = APIRouter()
@student_api.get("/")
async def getAllStudent():
# 一对多查询:返回单个对象
stu = await Student.get(name="王二康")
print(stu.name) # 学生信息
print(stu.sno)
clas = await stu.clas.values("name")
print(clas, type(clas)) # 班级信息
# 一对多查询:返回多个对象
students = await Student.all().values("name", "clas__name") # student的name字段,外键clas对应的clas表的name字段
print(students, type(students))
return students
响应结果


from typing import List
from fastapi import APIRouter
from pydantic import BaseModel, field_validator
from test_orm.models import Student, Course
student_api = APIRouter()
@student_api.get("/")
async def getAllStudent():
# 一对多查询:返回单个对象
stu = await Student.get(name="王二康")
print(stu.name) # 学生信息
print(stu.sno)
clas = await stu.clas.values("name")
print(clas, type(clas)) # 班级信息
# 一对多查询:返回多个对象
# students = await Student.all().values("name", "clas__name") # student的name字段,外键clas对应的clas表的name字段
# print(students, type(students))
# 多对多查询:某个学生的课程信息
print(await stu.courses.all())
print(await stu.courses.all().values("name", "teacher__name")) # course的name,外键teacher对应的teacher表的name字段
# 多对多查询:所有学生的课程、班级信息
students = await Student.all().values("name", "clas__name",
"courses__name") # student的name字段,外键clas对应的clas表的name字段,courses对应的student_course表的name字段
print(students, type(students))
return students
响应结果


from typing import List
from fastapi import APIRouter
from pydantic import BaseModel, field_validator
from test_orm.models import Student, Course
student_api = APIRouter()
@student_api.get("/")
async def getAllStudent():
# 一对多查询:返回单个对象
stu = await Student.get(name="王二康")
print(stu.name) # 学生信息
print(stu.sno)
clas = await stu.clas.values("name")
print(clas, type(clas)) # 班级信息
# 一对多查询:返回多个对象
# students = await Student.all().values("name", "clas__name") # student的name字段,外键clas对应的clas表的name字段
# print(students, type(students))
# 多对多查询:某个学生的课程信息
print(await stu.courses.all())
print(await stu.courses.all().values("name", "teacher__name")) # course的name,外键teacher对应的teacher表的name字段
# 多对多查询:所有学生的课程、班级信息
# students = await Student.all().values("name", "clas__name",
# "courses__name") # student的name字段,外键clas对应的clas表的name字段,courses对应的student_course表的name字段
# print(students, type(students))
# 多对多查询:获取学生姓名、班级名称、课程名称以及对应的讲师名称
students = await Student.all().values("name", "clas__name", "courses__name", "courses__teacher__name")
print(students, type(students))
return students
响应结果


此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。