Files
banban/talkingq-url/database/init_db.py
2026-03-24 15:04:36 +08:00

25 lines
969 B
Python

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