import asyncio from sqlalchemy.ext.asyncio import create_async_engine from database.models import Base from config import settings from utils.logger import session_logger import urllib.parse async def init_db(): """初始化数据库,创建所有表""" try: encoded_password = urllib.parse.quote_plus(settings.db_password) connection_string = f"mysql+aiomysql://{settings.db_user}:{encoded_password}@{settings.db_host}:{settings.db_port}/{settings.db_name}" engine = create_async_engine( connection_string, echo=settings.db_echo ) async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) await engine.dispose() session_logger.info("system", "database", "数据库表已成功创建") return True except Exception as e: session_logger.error("system", "database", f"创建数据库表失败: {str(e)}") return False