| 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() | |