Files
test/dao/teachers_dao.py
T

142 lines
3.9 KiB
Python
Raw Normal View History

2026-09-21 17:39:16 +08:00
from datetime import date
from sqlalchemy.orm import sessionmaker, declarative_base, Session, Query, selectinload
from model.teachers import Teacher
#添加方法
def add_teachers(db:Session ,t_name:str, t_gender:str, t_phone:str, t_subject:str,t_created:date):
t1=Teacher(
t_name=t_name,
t_gender=t_gender,
t_phone=t_phone,
t_subject=t_subject,
t_created=t_created,
t_delete=False
)
try:
db.add(t1)
db.commit()
db.refresh(t1)
return {"msg":"添加成功"}
except Exception as e:
print(e)
return {"msg":"删除成功"}
#删除方法
def del_teachers(db:Session,t_id:int,t_name:str):
teacher=db.query(Teacher).filter(Teacher.t_id==t_id,
Teacher.t_name==t_name,
Teacher.t_delete==False
).first()
if not teacher:
return {"msg":"没找到老师信息"}
#逻辑删除
try:
teacher.t_delete=True
db.commit()
return {"msg":"删除成功"}
except Exception as e:
print("删除异常",e)
return {"msg":"删除失败"}
#修改老师
def update_teachers(db:Session,t_id:int,new_name,new_gender,new_phone,new_subject,new_created):
teacher=db.query(Teacher).filter(Teacher.t_id==t_id,Teacher.t_delete==False).first()
if not teacher:
return {"msg":"没找到老师信息"}
teacher.t_name=new_name
teacher.t_gender=new_gender
teacher.t_phone=new_phone
teacher.t_subject=new_subject
teacher.t_created=new_created
try:
db.commit()
db.refresh(teacher)
return {"msg":"修改成功"}
except Exception as e:
print(e)
return {"msg": "修改失败"}
# 查询所有老师信息
# 分页
def search_teachers(db:Session,page:int,size:int):
start = (page - 1) * size
teachers=db.query(Teacher.t_id,
Teacher.t_name,
Teacher.t_gender,
Teacher.t_phone,
Teacher.t_subject,
Teacher.t_created).filter(Teacher.t_delete==False)
teach=teachers.offset(start).limit(size).all() #跳过多少行,查询当前页数据
total=teachers.count()
l1=[]
#将查出来的值存入列表
for i in teach:
bb={
"t_id":i[0],
"t_name":i[1],
"t_gender":i[2],
"t_phone":i[3],
"t_subject":i[4],
"t_created":i[5].strftime("%Y-%m-%d") # 将字符串转时间
}
l1.append(bb)
return {
"total":total,
"page":page,
"size":size,
"list":l1
}
#查询单个老师信息
#根据id查
def search_teachers_by_id(db:Session,t_id:int):
teachers=db.query(Teacher).filter(Teacher.t_id==t_id,Teacher.t_delete==False).first()
if not teachers:
return None
l2={
"t_id":teachers.t_id,
"t_name":teachers.t_name,
"t_gender":teachers.t_gender,
"t_phone":teachers.t_phone,
"t_subject":teachers.t_subject,
"t_created":teachers.t_created.strftime("%Y-%m-%d")
}
return l2
#查看带班信息
def get_teacher_classes(db:Session,t_id:int):
teacher=(db.query(Teacher).filter(Teacher.t_id==t_id,Teacher.t_delete==False)
.options(selectinload(Teacher.classes)).first())
if not teacher:
return None
l3=[]
for i in teacher.classes:
l3.append({
"class_id":i.class_id,
"class_name":i.class_name,
"create_time":i.create_time.strftime("%Y-%m-%d"),
})
res={
"tid":teacher.t_id,
"t_id": teacher.t_id,
"t_name": teacher.t_name,
"t_gender": teacher.t_gender,
"t_phone": teacher.t_phone,
"t_subject": teacher.t_subject,
"t_created": teacher.t_created.strftime("%Y-%m-%d"),
"class_list": l3
}
return res