RAG_HF / core /database.py
tjrlgns09's picture
.
d2100e7
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()