Files
------/dao/advisor_dao.py

56 lines
2.0 KiB
Python

from sqlalchemy.orm import Session
from model import Advisor, Student
#查所有返回的是列表
def get_all(db:Session):
return db.query(Advisor).filter(Advisor.flag==1).all()
#查单个,first返回第一个数据,没有就返回None
def get_by_id(db:Session,advisor_id:int):
return db.query(Advisor).filter(Advisor.id==advisor_id,Advisor.flag==1).first()
#查指定顾问下的学生信息
def adv_all_stu(db:Session,advisor_id:int):
advisor= db.query(Advisor).filter(Advisor.id == advisor_id, Advisor.flag == 1).first()
if advisor is None:
return None
else:
# students=advisor.students.filter(Student.flag==1).all()
students = db.query(Student).filter(Student.advisor_id == advisor_id, Student.flag == 1).all()
return students
#增加顾问
def create_advisor(db:Session,advisor_name:str,phone:str|None=None,gender=None):
advisor=Advisor(advisor_name=advisor_name,phone=phone,gender=gender,flag=1)
db.add(advisor)
db.commit()
db.refresh(advisor)
return advisor
#删除或者恢复顾问状态 先查到没有被删除再删除
def change_advisor(db:Session,advisor_id:int,flag:int):
advisor=db.query(Advisor).filter(Advisor.id==advisor_id).first()
if advisor:
advisor.flag=flag
else:
return None
db.commit()
return advisor
#修改顾问信息
def update_advisor(db:Session,advisor_id:int,advisor_name:str,phone:str|None=None,gender=None):
advisor = db.query(Advisor).filter(Advisor.id == advisor_id, Advisor.flag == 1).first()
if advisor :
advisor.advisor_name=advisor_name
# 没传的字段保持原值,不覆盖成 None
if phone is not None:
advisor.phone=phone
if gender is not None:
advisor.gender=gender
else:
return None
db.commit()
db.refresh(advisor) #它去数据库把这条记录的最新值(包括新生成的 id)读回来,更新到 advisor 对象上。
return advisor