ComfyUI-WorkflowPublisher/app/database/connection.py

43 lines
1.1 KiB
Python

"""
数据库连接配置
管理数据库引擎、会话和连接池
"""
from sqlalchemy import create_engine
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from sqlalchemy.orm import sessionmaker
from app.config import Settings
# 数据库配置
DATABASE_FILE = Settings().DB_FILE
ASYNC_DATABASE_URL = f"sqlite+aiosqlite:///{DATABASE_FILE}"
SYNC_DATABASE_URL = f"sqlite:///{DATABASE_FILE}"
# 创建异步引擎
async_engine = create_async_engine(
ASYNC_DATABASE_URL, echo=False, pool_pre_ping=True, pool_recycle=3600
)
# 创建异步会话工厂
AsyncSessionLocal = async_sessionmaker(
async_engine, class_=AsyncSession, expire_on_commit=False
)
# 创建同步引擎和会话(用于初始化)
sync_engine = create_engine(
SYNC_DATABASE_URL, echo=False, pool_pre_ping=True, pool_recycle=3600
)
SessionLocal = sessionmaker(bind=sync_engine)
async def get_db_session() -> AsyncSession:
"""获取数据库会话"""
async with AsyncSessionLocal() as session:
return session
def get_sync_session():
"""获取同步数据库会话(用于初始化等场景)"""
return SessionLocal()