nexus-ai-api / app /core /database.py
github-actions[bot]
Auto Deploy from Monorepo: Merge pull request #72 from human13th2team/dev
df5e016
raw
history blame contribute delete
945 Bytes
import os
from dotenv import load_dotenv
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from sqlalchemy.orm import DeclarativeBase
# .env 파일 λ‘œλ“œ
load_dotenv()
DATABASE_URL = os.getenv("DATABASE_URL")
if not DATABASE_URL:
raise ValueError("DATABASE_URL이 μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. .env νŒŒμΌμ„ ν™•μΈν•΄μ£Όμ„Έμš”.")
# 비동기 μ—”μ§„ 생성
engine = create_async_engine(DATABASE_URL, echo=True, connect_args={"statement_cache_size": 0})
# 비동기 μ„Έμ…˜ 메이컀
AsyncSessionLocal = async_sessionmaker(
bind=engine,
class_=AsyncSession,
expire_on_commit=False,
)
# Base 클래슀 μ •μ˜ (SQLAlchemy 2.0 style)
class Base(DeclarativeBase):
pass
# DB μ„Έμ…˜ μ˜μ‘΄μ„± μ£Όμž…μ„ μœ„ν•œ μ œλ„ˆλ ˆμ΄ν„°
async def get_db():
async with AsyncSessionLocal() as session:
try:
yield session
finally:
await session.close()