Files
orion/utils/database.py
2025-09-05 17:27:39 +02:00

37 lines
1023 B
Python

# utils/database.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import QueuePool
import logging
logger = logging.getLogger(__name__)
def get_db_engine(database_url: str):
"""Create database engine with connection pooling"""
if database_url.startswith('sqlite'):
# SQLite configuration
engine = create_engine(
database_url,
connect_args={"check_same_thread": False},
echo=False
)
else:
# PostgreSQL configuration with connection pooling
engine = create_engine(
database_url,
poolclass=QueuePool,
pool_size=10,
max_overflow=20,
pool_pre_ping=True,
echo=False
)
logger.info(f"Database engine created for: {database_url.split('@')[0]}@...")
return engine
def get_session_local(engine):
"""Create session factory"""
return sessionmaker(autocommit=False, autoflush=False, bind=engine)