From 56df0ef7b06399b2f739da468c0fded18636b513 Mon Sep 17 00:00:00 2001 From: wolin_liyujie <168155038@qq.com> Date: Wed, 23 Sep 2026 20:10:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=E5=86=97=E4=BD=99?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E6=80=A7=E5=88=AB=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/student.py | 66 ++++++++++++++++++++++++---------------------- dao/student.py | 8 ++++++ schemas/student.py | 5 ++++ 3 files changed, 47 insertions(+), 32 deletions(-) diff --git a/api/student.py b/api/student.py index 681c08b..2a701f7 100644 --- a/api/student.py +++ b/api/student.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, HTTPException,Query,Path from sqlalchemy.orm import Session from core.database import get_db -from schemas.student import StudentCreate, StudentUpdate +from schemas.student import StudentCreate, StudentUpdate, Gender from dao import student as student_dao student_router = APIRouter() @@ -51,6 +51,7 @@ def update_student( @student_router.get("", summary="分页查询学生列表") def get_students( # 三个查询条件都可以不传 + gender:Gender = Query(default=None), student_no: str | None = Query(default=None,description="按学号精确查询"), student_name: str | None = Query(default=None,description="按名字模糊查询"), class_id: int | None = Query(default=None,gt=0,description="按班级号精确查询"), @@ -67,6 +68,7 @@ def get_students( class_id=class_id, page=page, page_size=page_size, + gender = gender ) data = [ { @@ -95,37 +97,37 @@ def get_students( "data": data, } -@student_router.get("/{id}", summary="查询学生详情") -def get_student(id: int = Path(gt=0), - db: Session = Depends(get_db)): - # 根据路径中的 ID 查询学生 - student = student_dao.get_student_by_id(id, db) - - if not student: - # 404 表示请求的数据不存在 - raise HTTPException(status_code=404, detail="学生不存在") - - result = { - "id": student.id, - "student_no": student.student_no, - "student_name": student.student_name, - "class_id": student.class_id, - "consultant_id": student.consultant_id, - "native_place": student.native_place, - "graduation_school": student.graduation_school, - "major": student.major, - "enrollment_date": student.enrollment_date, - "graduation_date": student.graduation_date, - "education": student.education, - "age": student.age, - "gender": student.gender, - } - - return { - "code": 200, - "detail": "查询成功", - "data": result, - } +# @student_router.get("/{id}", summary="查询学生详情") +# def get_student(id: int = Path(gt=0), +# db: Session = Depends(get_db)): +# # 根据路径中的 ID 查询学生 +# student = student_dao.get_student_by_id(id, db) +# +# if not student: +# # 404 表示请求的数据不存在 +# raise HTTPException(status_code=404, detail="学生不存在") +# +# result = { +# "id": student.id, +# "student_no": student.student_no, +# "student_name": student.student_name, +# "class_id": student.class_id, +# "consultant_id": student.consultant_id, +# "native_place": student.native_place, +# "graduation_school": student.graduation_school, +# "major": student.major, +# "enrollment_date": student.enrollment_date, +# "graduation_date": student.graduation_date, +# "education": student.education, +# "age": student.age, +# "gender": student.gender, +# } +# +# return { +# "code": 200, +# "detail": "查询成功", +# "data": result, +# } @student_router.delete("/{id}", summary="逻辑删除学生") def delete_student(id: int, db: Session = Depends(get_db)): diff --git a/dao/student.py b/dao/student.py index 3fc6d18..931de24 100644 --- a/dao/student.py +++ b/dao/student.py @@ -1,6 +1,9 @@ from models.student import Student from sqlalchemy.orm import Session +from schemas.student import Gender + + #新建学生 def create_students(d: dict, db: Session): stu = Student(**d) @@ -62,6 +65,7 @@ def get_students( class_id: int | None = None, page: int = 1, page_size: int = 10, + gender: Gender = None, ): # 第一步:只查询没有被删除的学生 query = db.query(Student).filter(Student.is_deleted == 0) @@ -71,6 +75,10 @@ def get_students( # 学号使用精确查询 query = query.filter(Student.student_no == student_no) + if gender: + #查询枚举性别 + query = query.filter(Student.gender == gender) + if student_name: # 姓名使用模糊查询,例如“张”可以查到“张三” query = query.filter(Student.student_name.like(f"%{student_name}%")) diff --git a/schemas/student.py b/schemas/student.py index a916070..8ac364c 100644 --- a/schemas/student.py +++ b/schemas/student.py @@ -1,4 +1,6 @@ from datetime import date +from enum import Enum + from pydantic import BaseModel, ConfigDict, Field, model_validator from typing import Literal @@ -40,3 +42,6 @@ class StudentUpdate(BaseModel): age: int | None = Field(default=None, ge=0, le=150) gender: Literal["男", "女"] | None = None +class Gender(str,Enum): + g1 = '男' + g2 = '女' \ No newline at end of file