第一版_完整
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
from sqlalchemy.orm import Session
|
||||
from model.stu_model import StuInfo
|
||||
from model.cls_mgmt_model import ClsMgmt
|
||||
from scheme.stu_scheme import StudentUpdate
|
||||
|
||||
|
||||
class StudentDao:
|
||||
"""查学生"""
|
||||
#---------分页查询所有学生信息----------
|
||||
@staticmethod
|
||||
def get_all(db: Session, skip: int = 0, limit: int = 20):
|
||||
return (db.query(StuInfo)
|
||||
.filter(StuInfo.is_deleted == 0)
|
||||
.offset(skip).limit(limit).all())
|
||||
#---------根据学生id查询学生信息----------
|
||||
@staticmethod
|
||||
def get_by_id(db: Session, stu_id: str) :
|
||||
return (db.query(StuInfo).
|
||||
filter(StuInfo.id == stu_id)
|
||||
.filter(StuInfo.is_deleted == 0)
|
||||
.first())
|
||||
#---------根据学生姓名查询学生信息----------
|
||||
@staticmethod
|
||||
def get_by_name(db: Session, stu_name: str) :
|
||||
return (db.query(StuInfo)
|
||||
.filter(StuInfo.name == stu_name)
|
||||
.filter(StuInfo.is_deleted == 0)
|
||||
.all())
|
||||
#---------根据班级id查询班级学生信息----------
|
||||
@staticmethod
|
||||
def get_by_class(db: Session, cls_id: str) :
|
||||
return (db.query(StuInfo)
|
||||
.filter(StuInfo.cls_id == cls_id)
|
||||
.filter(StuInfo.is_deleted == 0)
|
||||
.all())
|
||||
# """增加学生"""
|
||||
# 1 ---------添加学生信息----------
|
||||
@staticmethod
|
||||
def create(db: Session, student_data: dict):
|
||||
db_student=StuInfo(**student_data)
|
||||
db.add(db_student)
|
||||
db.commit()
|
||||
db.refresh(db_student) # 刷新对象,获取数据库生成的默认值(如 created_at)
|
||||
return db_student
|
||||
# 2 ---------查询班级是否存在(可能班级创建了但还没人)----------
|
||||
@staticmethod
|
||||
def get_class_by_id(db: Session,cls_id:str):
|
||||
return (db.query(ClsMgmt)
|
||||
.filter(ClsMgmt.id==cls_id)
|
||||
.first()) #不存在自动返回None
|
||||
# 3 ---------查询对应的班级人数用来生成学号----------
|
||||
@staticmethod
|
||||
def count_by_class(db: Session, cls_id: str) -> int:
|
||||
return (db.query(StuInfo)
|
||||
.filter(StuInfo.cls_id == cls_id)
|
||||
.filter(StuInfo.is_deleted == 0)
|
||||
.count())
|
||||
# """修改学生信息"""
|
||||
#---------根据学生id查找并修改学生信息----------
|
||||
@staticmethod
|
||||
def update(db:Session,stu_id:str,stu_data:StudentUpdate):
|
||||
db_student = StudentDao.get_by_id(db,stu_id)
|
||||
if not db_student:
|
||||
return None
|
||||
# model_dump把用户传入修改请求体的信息转成字典,exclude_unset=True把没传入的字段排除掉,否则会None来修改其他字段
|
||||
update_data = stu_data.model_dump(exclude_unset=True)
|
||||
for key, value in update_data.items(): # 动态设置属性
|
||||
setattr(db_student, key, value)
|
||||
|
||||
db.commit() # 提交事务
|
||||
db.refresh(db_student) # 刷新对象,获取 onupdate 时间等
|
||||
return db_student
|
||||
# """删除学生信息""" 逻辑删除
|
||||
#---------根据学生id查找并删除学生信息----------
|
||||
@staticmethod
|
||||
def delete(db:Session,stu_id:str):
|
||||
db_student=StudentDao.get_by_id(db,stu_id)
|
||||
if not db_student:
|
||||
return False
|
||||
db_student.is_deleted=1
|
||||
db.commit()
|
||||
db.refresh(db_student)
|
||||
return db_student
|
||||
Reference in New Issue
Block a user