import asyncio from utils.logger import session_logger from database.connection import get_db_manager class DatabaseServiceBase: _logged_initialized_services = set() """ 数据库服务基类,提供通用的数据库初始化和会话管理功能 所有需要访问数据库的服务类都应该继承此基类 """ 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 if self.service_name not in self._logged_initialized_services: self._logged_initialized_services.add(self.service_name) 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()