add banbanmini backend
This commit is contained in:
30
talkingq-url/services/database_service_base.py
Normal file
30
talkingq-url/services/database_service_base.py
Normal file
@@ -0,0 +1,30 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user