Files
student_system/dao/student_dao.py
T

110 lines
3.3 KiB
Python

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":"学生信息修改成功"}