from fastapi import HTTPException from sqlalchemy import and_ from sqlalchemy.orm import Session from model.advisor import Advisor from model.student import Student from model.classinfo import ClassInfo from datetime import date import scheme import api def get_stu(db:Session): res=db.query(Student).all() l1=list() for i in res : l1.append(i.name) return {"message":l1} def get_all_stu(db:Session): rs=db.query(Student).filter(Student.statu==1).all() return {"message":"查询成功","data":rs} def get_stu_id(stu_id:int,db:Session): res = db.query(Student).filter(Student.id==stu_id).all() l1 = list() for i in res: l1.append(i.name) return {"message": l1} def query_sid(db:Session,stu_id): res=db.query(Student).filter(Student.id==stu_id).first() return res #按班级姓名查 def query_cid(db:Session,class_id,stu_name): res=db.query(Student).filter(and_(Student.class_id==class_id,Student.name==stu_name)).first() return {"data":res} def query_stu_name(db:Session,stu_name): res=db.query(Student).filter(Student.name==stu_name).all() return res # 逻辑删除学生 def delete_sid(db:Session,stu_id): rs=db.query(Student).filter(Student.id==stu_id).first() if not rs: raise HTTPException(status_code=404, detail="学生不存在") rs.statu=0 db.commit() return {"message":f"已删除编号为:{rs.stu_id}的学生:{rs.name}"}#逻辑删除 def create_stu(db:Session,stu): cid=db.query(ClassInfo.id).filter(ClassInfo.class_name==stu.class_name).first() if cid: cid=cid.id else: raise HTTPException(status_code=404, detail="班级不存在") vid=None if stu.advisor_name: vid=db.query(Advisor.id).filter(Advisor.name==stu.advisor_name).first() if vid: vid=vid.id else: raise HTTPException(status_code=404, detail="顾问不存在") s_new=Student( name=stu.name, hometown=stu.hometown, school = stu.school, major = stu.major, enroll_time = stu.enroll_time, graduate_time = stu.graduate_time, education = stu.education, age = stu.age, gender = stu.gender, statu = 1, advisor_id = vid, class_id = cid ) db.add(s_new) db.commit() return {"message":"学生增加成功"} def update_stu(stu_id,stu,db:Session): cid = db.query(ClassInfo.id).filter(ClassInfo.class_name == stu.class_name).first() if cid is None: raise HTTPException(status_code=400, detail="找不到该班级名称") else: cid=cid.id if stu.advisor_name: vid = db.query(Advisor.id).filter(Advisor.name == stu.advisor_name).first() if vid: vid=vid.id else: raise HTTPException(status_code=404, detail="顾问不存在") s=db.query(Student).filter(Student.id==stu_id).first() if not s: raise HTTPException(status_code=404, detail="该学生不存在") s.name=stu.name s.hometown = stu.hometown s.school = stu.school s.major = stu.major s.enroll_time = stu.enroll_time s.graduate_time = stu.graduate_time s.education = stu.education s.age = stu.age s.gender = stu.gender s.advisor_id = vid s.class_id = cid db.commit() return {"message":"学生信息修改成功"}