Files
DjangoAdmin_FastAPI_EleVue/shared/base_db.py
T
ClaudeandClaude bde742c7a8 feat(phase2): shared/ 共享层迁移
- shared/: enums/constants/pagination/base_model/base_db/base_repository/base_service
- apps/constants 与 apps/models/base_model、base_db 改为垫片
- 新增 pagination 单元测试

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 10:03:38 +08:00

64 lines
1.9 KiB
Python

# +======================================================================
# | 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