trading/shared/db.py

23 lines
629 B
Python
Raw Permalink Normal View History

"""SQLAlchemy async engine and session factory."""
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from shared.config import BaseConfig
def create_db(config: BaseConfig) -> tuple:
"""Create an async engine and session factory from the given config.
Returns a ``(engine, session_factory)`` tuple.
"""
engine = create_async_engine(
config.database_url,
echo=config.log_level == "DEBUG",
)
session_factory = async_sessionmaker(
engine,
class_=AsyncSession,
expire_on_commit=False,
)
return engine, session_factory