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