diff --git a/PythonProject/api/grade_api.py b/PythonProject/api/grade_api.py index f76c053..4b4d6e4 100644 --- a/PythonProject/api/grade_api.py +++ b/PythonProject/api/grade_api.py @@ -1,7 +1,8 @@ -from fastapi import APIRouter,Depends,HTTPException,Path +from fastapi import APIRouter,Depends,HTTPException,Path,Form from util.database import get_db from model.all_model import Student_Model from dao.grade_dao import * +from schema.grade_schema import * gradeAPI = APIRouter(tags=['学生考核成绩']) @@ -12,3 +13,12 @@ def get_grade(stu_id: int,db=Depends(get_db)): return {'code': 200,'msg':'查询成功','data':res} except Exception as e: raise HTTPException(status_code=500,detail=f'数据库查询异常:{str(e)}') + +@gradeAPI.post('/{stu_id}',summary='添加学生成绩') +def post_grade(o:GradeRequest=Form(),db=Depends(get_db)): + d=o.model_dump() + r=add_grade_dao(g=d,db=db) + if not r: + raise HTTPException(status_code=400, detail='学生不存在') + return GradeResponse + diff --git a/PythonProject/dao/grade_dao.py b/PythonProject/dao/grade_dao.py index 8ee4926..7a65756 100644 --- a/PythonProject/dao/grade_dao.py +++ b/PythonProject/dao/grade_dao.py @@ -2,7 +2,7 @@ from fastapi import Depends,HTTPException from util.database import get_db -from model.grade_model import * +from model.all_model import * def get_grade_dao( stu_id:int @@ -13,3 +13,14 @@ def get_grade_dao( stu_id:int return r1 else: raise HTTPException(status_code=404,detail="学生不存在") + +def add_grade_dao(o,db=Depends(get_db)): + try: + o1 = WlScore(**o) + db.add(o1) + except: + db.rollback() + return False + else: + db.commit() + return True \ No newline at end of file diff --git a/PythonProject/model/all_model.py b/PythonProject/model/all_model.py index a2be52c..4262fa0 100644 --- a/PythonProject/model/all_model.py +++ b/PythonProject/model/all_model.py @@ -160,7 +160,7 @@ class WlScore(Base): stu_id = Column( Integer ,ForeignKey('wl_student.stu_id') - ,autoincrement=True + ,autoincrement=True #自增主建 ,comment='学生编号') exam_order = Column(Integer diff --git a/PythonProject/schema/grade_schema.py b/PythonProject/schema/grade_schema.py index 09de5b5..473dfc9 100644 --- a/PythonProject/schema/grade_schema.py +++ b/PythonProject/schema/grade_schema.py @@ -1,10 +1,15 @@ -from datetime import date -from typing import Self +from model.all_model import * from pydantic import BaseModel,Field class GradeRequest(BaseModel): stu_id:str|None = Field(description="学生编号") + exam_order:int = Field(description='考核序次') + score:float = Field(description='成绩') - -class GradeResponse(BaseModel): \ No newline at end of file +class GradeResponse(BaseModel): + code: int = 200 + detail: str = 'OK' + stu_id:str + exam_order:int + score:float \ No newline at end of file