초기화
This commit is contained in:
@@ -0,0 +1 @@
|
||||
# database package marker
|
||||
@@ -0,0 +1,14 @@
|
||||
import mysql.connector
|
||||
|
||||
# --- DB 설정 ---
|
||||
DB_HOST = "localhost"
|
||||
DB_PORT = 3306
|
||||
DB_USER = "ctnt_root"
|
||||
DB_PASSWORD = "Umsang6595!!"
|
||||
DB_NAME = "carbon_cutting_mc_db"
|
||||
|
||||
from .pool import get_pooled_connection
|
||||
|
||||
def get_db_connection():
|
||||
"""DB 연결 풀에서 연결을 획득합니다."""
|
||||
return get_pooled_connection()
|
||||
@@ -0,0 +1,38 @@
|
||||
import mysql.connector.pooling
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger("db_pool")
|
||||
|
||||
DB_CONFIG = {
|
||||
"host": "localhost",
|
||||
"port": 3306,
|
||||
"user": "ctnt_root",
|
||||
"password": "Umsang6595!!",
|
||||
"database": "carbon_cutting_mc_db",
|
||||
"autocommit": True,
|
||||
}
|
||||
|
||||
try:
|
||||
dbpool = mysql.connector.pooling.MySQLConnectionPool(
|
||||
pool_name="carbon_cutting_pool",
|
||||
pool_size=5,
|
||||
pool_reset_session=True,
|
||||
**DB_CONFIG
|
||||
)
|
||||
logger.info("[DB POOL] Connection pool initialized (pool_size=5)")
|
||||
except Exception as e:
|
||||
logger.error(f"[DB POOL ERROR] Failed to initialize pool: {e}", exc_info=True)
|
||||
dbpool = None
|
||||
|
||||
def get_pooled_connection():
|
||||
"""풀에서 연결 획득"""
|
||||
if dbpool is None:
|
||||
raise RuntimeError("[DB POOL ERROR] Pool not initialized")
|
||||
conn = dbpool.get_connection()
|
||||
try:
|
||||
# DB 세션이 만료되거나 끊어진 경우 자동 재연결 시도
|
||||
conn.ping(reconnect=True, attempts=3, delay=1)
|
||||
except Exception as e:
|
||||
logger.warning(f"[DB POOL] Ping/Reconnect failed: {e}")
|
||||
return conn
|
||||
|
||||
Reference in New Issue
Block a user