Files
------/dao/class_dao.py

82 lines
2.7 KiB
Python

from sqlalchemy.orm import Session
from model.class_model import Classes
from schema.class_schema import ClassAdd
#新增班级
# 定义新增班级的函数,需要两个参数:db数据库通道、class_add前端传来的班级数据
# db:Session代表数据库会话对象,是程序和 MySQL 数据库交互的通道,所有增删改查操作都需要使用它
def create_class(db: Session, class_add: ClassAdd):
# 新建一个班级对象
new_class = Classes()
# 新的班级名称,赋值给这个新对象
new_class.class_name = class_add.class_name
# 开学时间
new_class.start_time = class_add.start_time
# 班主任
new_class.head_teacher = class_add.head_teacher
# 任课老师
new_class.teacher = class_add.teacher
db.add(new_class)
# 提交写入数据库
db.commit()
# 刷新
db.refresh(new_class)
return new_class
#根据id查询单个班级
def get_class_by_cid(db: Session, cid: int):
# 查询:找到对应cid,并且is_del=1(状态正常、没有逻辑删除) .first() 查询,拿到满足条件的第一条数据;找不到就返回 None
result = db.query(Classes).filter(Classes.cid == cid, Classes.is_del == 1).first()
return result
#根据班级名称查询
def get_class_by_name(db: Session,name:str):
# 根据班级名称查询,只查询有效班级is_del ==1,用于新增时判断班级名称是否重复
result = db.query(Classes).filter(Classes.class_name == name, Classes.is_del == 1).first()
return result
# 删除班级(物理删除)
def delete_class(db: Session, cid: int):
# 根据班级编号,去数据库找到对应的班级
class_obj = db.query(Classes).filter(Classes.cid == cid).first()
# 如果没找到这个班级,返回False
if not class_obj:
return False
# 从数据库里删掉这条班级数据
db.delete(class_obj)
# 提交操作
db.commit()
# 删除成功,返回True
return True
# 修改班级信息
def update_class(db: Session, cid: int, class_add: ClassAdd):
# 根据班级编号,查询数据库找到对应的班级
class_obj = db.query(Classes).filter(Classes.cid == cid).first()
# 如果没有找到这个班级,直接返回空
if not class_obj:
return None
# 把前端传过来的新信息,覆盖原来班级对象里面的数据
class_obj.class_name = class_add.class_name
class_obj.start_time = class_add.start_time
class_obj.head_teacher = class_add.head_teacher
class_obj.teacher = class_add.teacher
# 提交,把修改保存到数据库
db.commit()
# 返回修改完成后的班级信息
return class_obj