Files
d3m0k1d.ru/backend/app/db_engine.py
2025-11-23 15:26:41 +03:00

43 lines
987 B
Python

from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker
from sqlalchemy.orm import DeclarativeBase
import dotenv
import os
dotenv.load_dotenv()
PG_USER = dotenv.get_key(".env", "POSTGRES_USER")
PG_PASSWORD = dotenv.get_key(".env", "POSTGRES_PASSWORD")
PG_HOST = dotenv.get_key(".env", "POSTGRES_HOST")
PG_PORT = dotenv.get_key(".env", "POSTGRES_PORT")
PG_DB = dotenv.get_key(".env", "POSTGRES_DB")
DATABASE_URL = (
f"postgresql+asyncpg://{PG_USER}:{PG_PASSWORD}@{PG_HOST}:{PG_PORT}/{PG_DB}"
)
engine = create_async_engine(
DATABASE_URL,
echo=False,
future=True,
)
async_session_maker = async_sessionmaker(
engine,
class_=AsyncSession,
expire_on_commit=False,
)
class Base(DeclarativeBase):
pass
async def get_async_session():
async with async_session_maker() as session:
yield session
async def init_db():
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)