# +====================================================================== # | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ] # +---------------------------------------------------------------------- # | Copyright (c) 2021-2026 一米阳光团队 版权所有 # | 开源协议: Apache-2.0 # +====================================================================== # 由 apps/models/base_db.py 迁移而来。 """ 数据库操作基类模块 ============================================================= 提供数据库模型的通用操作方法,包括: - 单条数据保存(save):add + flush,不提交事务 - 多条数据批量保存(save_all):add_all + flush,不提交事务 - 数据删除(delete):delete + flush,不提交事务 事务边界由 db_session_middleware 统一管理: - 请求成功且为写操作 → 自动 commit - 请求异常 → 自动 rollback - 业务代码无需关心事务提交 """ import logging from core.database import get_db_session logger = logging.getLogger(__name__) class base_db: __abstract__ = True def save(self): """ 保存当前实例到数据库 将对象添加到会话并 flush(发送 SQL 到数据库获取自增 ID), 但不提交事务。事务由中间件统一管理。 Returns: self: 当前实例,支持链式调用。通过 self.id 可获取自增主键。 """ db = get_db_session() db.add(self) db.flush() return self @staticmethod def save_all(*args): """批量保存多个实例到数据库""" if not args: return db = get_db_session() db.add_all(args) db.flush() def delete(self): """从数据库删除当前实例""" db = get_db_session() db.delete(self) db.flush() return True