38 lines
759 B
Python
38 lines
759 B
Python
import os
|
|
|
|
from dotenv import load_dotenv
|
|
from sqlalchemy.ext.asyncio import (
|
|
AsyncSession,
|
|
async_sessionmaker,
|
|
create_async_engine,
|
|
)
|
|
from sqlalchemy.orm import DeclarativeBase
|
|
|
|
from .config import BASE_DIR
|
|
|
|
|
|
class Base(DeclarativeBase):
|
|
pass
|
|
|
|
dotenv_path = BASE_DIR / '.env'
|
|
load_dotenv(dotenv_path=dotenv_path)
|
|
|
|
DB_PASSWORD = os.getenv("DB_PASSWORD")
|
|
DB_USER = os.getenv("DB_USER")
|
|
DB_NAME = os.getenv("DB_NAME")
|
|
|
|
DB_URL = f"postgresql+psycopg://{DB_USER}:{DB_PASSWORD}@127.0.0.1:5432/{DB_NAME}"
|
|
|
|
engine = create_async_engine(DB_URL, echo=True)
|
|
|
|
SessionLocal = async_sessionmaker(
|
|
bind=engine,
|
|
expire_on_commit=False,
|
|
class_=AsyncSession,
|
|
)
|
|
|
|
|
|
async def get_db():
|
|
async with SessionLocal() as session:
|
|
yield session
|