nex_basse/backend/app/core/db.py

32 lines
625 B
Python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from .config import get_settings
settings = get_settings()
def build_db_url() -> str:
return (
f"mysql+pymysql://{settings.db_user}:{settings.db_password}"
f"@{settings.db_host}:{settings.db_port}/{settings.db_name}"
"?charset=utf8mb4"
)
engine = create_engine(
build_db_url(),
echo=settings.db_echo,
pool_pre_ping=True,
)
SessionLocal = sessionmaker(bind=engine, autocommit=False, autoflush=False)
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()