28 lines
708 B
Python
28 lines
708 B
Python
|
"""This module configures and provides the sqlalchemy session factory and base model."""
|
||
|
|
||
|
from sqlalchemy import create_engine
|
||
|
from sqlalchemy.orm import sessionmaker
|
||
|
from sqlalchemy.ext.declarative import declarative_base
|
||
|
|
||
|
from todo.config import get_settings
|
||
|
|
||
|
|
||
|
s = get_settings()
|
||
|
|
||
|
# The SQL driver is specified by the DSN-prefix below.
|
||
|
_pg_dsn = f"postgresql+psycopg2://{s.pg_user}:{s.pg_password}@{s.pg_hostname}:{s.pg_port}/{s.pg_dbname}"
|
||
|
engine = create_engine(_pg_dsn, echo=s.debug_mode)
|
||
|
|
||
|
# SQLalchemy session factory
|
||
|
SessionLocal = sessionmaker(engine)
|
||
|
# SQLalchemy base model
|
||
|
Base = declarative_base()
|
||
|
|
||
|
|
||
|
def get_db():
|
||
|
db = SessionLocal()
|
||
|
try:
|
||
|
yield db
|
||
|
finally:
|
||
|
db.close()
|