from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, declarative_base import os from dotenv import load_dotenv # .env 파일 로드 (있을 경우) load_dotenv() # 데이터베이스 연결 URL # 보안을 위해 실제 환경에서는 .env 파일이나 환경 변수에 DATABASE_URL을 저장하는 것이 좋습니다. # 여기서는 하드코딩된 값을 기본값으로 사용합니다. SQLALCHEMY_DATABASE_URL = os.getenv("DATABASE_URL") # SQLAlchemy 엔진 생성 # Neon DB와 같은 클라우드 DB는 연결이 끊길 수 있으므로 pool_pre_ping=True 옵션을 추가하여 # 연결을 확인한 후 사용하는 것이 좋습니다. engine = create_engine( SQLALCHEMY_DATABASE_URL, pool_pre_ping=True ) # 세션 팩토리 생성 SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Base 클래스 생성 Base = declarative_base() # DB 세션 의존성 주입을 위한 함수 (FastAPI 라우터에서 사용) def get_db(): db = SessionLocal() try: yield db finally: db.close()