""" 数据库配置 """ from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine from sqlalchemy.orm import sessionmaker from .config import settings # 创建异步引擎 engine = create_async_engine( settings.database_url, echo=settings.DEBUG, pool_pre_ping=True, pool_size=10, max_overflow=20, # 确保 MySQL 连接使用 UTF-8 字符集 connect_args={ "charset": "utf8mb4", "use_unicode": True, "autocommit": False, "init_command": "SET character_set_client=utf8mb4, character_set_connection=utf8mb4, character_set_results=utf8mb4, collation_connection=utf8mb4_unicode_ci", } if "mysql" in settings.database_url else {}, ) # 创建异步会话工厂 AsyncSessionLocal = sessionmaker( engine, class_=AsyncSession, expire_on_commit=False, ) # 别名(用于调度器等模块) async_session_factory = AsyncSessionLocal