Files
banban/talkingq-url/services/database_service_base.py
2026-03-24 15:04:36 +08:00

31 lines
1.1 KiB
Python

import asyncio
from utils.logger import session_logger
from database.connection import get_db_manager
class DatabaseServiceBase:
"""
数据库服务基类,提供通用的数据库初始化和会话管理功能
所有需要访问数据库的服务类都应该继承此基类
"""
def __init__(self, service_name="unknown"):
self.db_manager = None
self._db_initialized = False
self.service_name = service_name
async def _init_database(self):
"""初始化数据库连接"""
if self._db_initialized:
return
try:
self.db_manager = await get_db_manager()
self._db_initialized = True
session_logger.info("system", self.service_name, f"{self.service_name}数据库连接初始化成功")
except Exception as e:
session_logger.error("system", self.service_name, f"{self.service_name}数据库连接初始化失败: {str(e)}")
raise
async def get_session(self):
"""获取数据库会话"""
await self._init_database()
return await self.db_manager.get_session()