Files
Aislo/config/config_db.py
T
2026-07-05 21:27:23 +09:00

57 lines
1.2 KiB
Python

"""
config_db.py
데이터베이스 연결 설정 (MariaDB + aiomysql)
비동기 연결 풀 생성 및 관리.
"""
from typing import Optional
import aiomysql
from .config_system import (
DB_HOST,
DB_NAME,
DB_PASSWORD,
DB_POOL_MAX,
DB_POOL_MIN,
DB_PORT,
DB_USER,
)
# 글로벌 DB 풀 (앱 시작/종료 시 관리)
db_pool: Optional[aiomysql.Pool] = None
async def init_db_pool() -> aiomysql.Pool:
"""MariaDB 연결 풀 초기화"""
global db_pool
db_pool = await aiomysql.create_pool(
host=DB_HOST,
port=DB_PORT,
db=DB_NAME,
user=DB_USER,
password=DB_PASSWORD,
minsize=DB_POOL_MIN,
maxsize=DB_POOL_MAX,
autocommit=False,
charset="utf8mb4",
)
return db_pool
async def close_db_pool() -> None:
"""MariaDB 연결 풀 종료"""
global db_pool
if db_pool:
db_pool.close()
await db_pool.wait_closed()
db_pool = None
def get_db_pool() -> aiomysql.Pool:
"""현재 활성 DB 풀 반환. 없으면 RuntimeError"""
if not db_pool:
raise RuntimeError("DB pool not initialized. Call init_db_pool() first.")
return db_pool