41 lines
912 B
Python
41 lines
912 B
Python
import os
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from sqlalchemy.pool import QueuePool
|
|
|
|
COOLBOT_DB_URL = os.getenv(
|
|
"COOLBOT_DB_URL"
|
|
)
|
|
|
|
# 如果未设置环境变量,抛出错误
|
|
if not COOLBOT_DB_URL:
|
|
raise ValueError("COOLBOT_DB_URL environment variable is not set")
|
|
|
|
coolbot_engine = create_engine(
|
|
COOLBOT_DB_URL,
|
|
poolclass=QueuePool,
|
|
pool_size=10,
|
|
max_overflow=20,
|
|
pool_timeout=30,
|
|
pool_recycle=1800,
|
|
pool_pre_ping=True,
|
|
echo=False,
|
|
connect_args={
|
|
"connect_timeout": 10,
|
|
"application_name": "zodiac-coolbot"
|
|
}
|
|
)
|
|
|
|
CoolbotSession = sessionmaker(autocommit=False, autoflush=False, bind=coolbot_engine)
|
|
|
|
def get_coolbot_db():
|
|
"""获取coolbot数据库会话"""
|
|
db = CoolbotSession()
|
|
try:
|
|
yield db
|
|
except Exception:
|
|
db.rollback()
|
|
raise
|
|
finally:
|
|
db.close()
|