Files
DoubaoTeam/dao/class_dao.py
T
2026-09-22 11:28:28 +08:00

67 lines
5.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 班级dao模块
from models.class_model import Classes # 从models包里的class_model班级模块导入Classes表模型类
#以下分别定义增、删、改、查的依赖函数,以便api接口函数中执行
# ————定义班级表"新增"信息的函数————
def post_classes_dao( c , db ): # 定义函数,设置两个形参c,db
try : # 执行以下可能报错的代码
cc = Classes( **c ) # 将接口函数接收的字典数据解包,实例化为 Classes 模型对象
db.add( cc ) # 将模型对象加入当前数据库会话(尚未真正写入数据库)
except : # 捕获异常:
db.rollback() # 如果中间出错,回滚事务,防止产生脏数据
return False # 返回 False,返回接口,表示操作失败
else : # 执行成功:
db.commit() # 提交事务:将数据真正持久化写入到数据库中
return True # 返回 True,返回接口,表示操作成功
# ————定义班级表"更新"信息的函数————
def update_classes_dao( class_id , db , updates ): # 定义函数,设置三个形参class_id,db ,updates
try : # 执行以下可能报错的代码
db.query(Classes).filter(Classes.id ==class_id , Classes.is_deleted == 0 ).update(updates) # 将接口函数接收的更新数据更新到Classes模型对象,条件是未删除且前端输入的id和数据库id可以匹配上的
except : # 捕获异常:
db.rollback() # 如果中间出错,回滚事务,防止产生脏数据
return False # 返回 False,返回接口,表示操作失败
else : # 执行成功:
db.commit() # 提交事务:将数据真正持久化写入到数据库中
return True # 返回 True,返回接口,表示操作成功
# ————定义班级表"查询"信息的函数————
def get_classes_dao( class_id, class_no , class_name , page , page_size , db ): # 定义函数,设置六个形参class_id, class_no , class_name , page , page_size , db
q = db.query( Classes ).filter( Classes.is_deleted == 0 ) # 初始化查询语句,基础过滤条件为筛选未删除的数据 (is_deleted=0)
if class_id : # 如果传入了班级id参数
q = q.filter( Classes.id == class_id ) # 则追加id过滤条件
if class_no : # 如果传入了班级no参数
q = q.filter( Classes.class_no == class_no ) # 则追加no过滤条件
if class_name : # 如果传入了班级name参数
q = q.filter( Classes.class_name == class_name ) # 则追加name过滤条件
total = q.count() # tatal变量接收满足当前所有过滤条件的数据总条数
r = q.offset( ( page-1 ) * page_size ).limit( page_size ).all() # 变量r用来接收查询取出结果列表,计算分页偏移量(从第几行开始查),设置分页限制条数
return total , [ # 返回 total变量总条数 和 将查询结果列表转换为字典列表的数据
{
'class_id':i.id # 提取班级ID
, 'class_no':i.class_no # 提取班级编号
, 'class_name':i.class_name # 提取班级名称
, 'start_date':i.start_date # 提取开课日期
, 'end_date':i.end_date # 提取结课日期
, 'created_at':i.created_at # 提取创建时间
, 'update_at':i.update_at # 提取更新时间
, 'remark':i.remark # 提取备注信息
}
for i in r # 循环遍历查询出的每一行数据 i
]
# ————定义班级表"删除"信息的函数————
def delete_classes_dao( class_id , db ): # 定义函数,设置两个个形参class_id,db
try : # 执行以下可能报错的代码
db.query( Classes ).filter( Classes.id == class_id , Classes.is_deleted == 0 ).update( {"is_deleted": 1} ) # 将未删除且前端输入的id和数据库id可以匹配上的数据更新is_deleted字段为1,表示已逻辑删除
except : # 捕获异常:
db.rollback() # 如果中间出错,回滚事务,防止产生脏数据
return False # 返回 False,返回接口,表示操作失败
else : # 执行成功:
db.commit() # 提交事务:更新is_deleted字段为1,表示已逻辑删除,前端无法查询到已逻辑删除的数据
return True # 返回 True,返回接口,表示操作成功