개발로 자기계발
article thumbnail
728x90
SessionLocal을 이용해서 사전에 만들었던 todos 테이블을 읽어오는것이 목표

 

1. SessionLocal을 Import 한다.(31페이지 참고)

from database import engine, SessionLocal

 

2. db connection 객체 만들기

def get_db():
    try:
        db = SessionLocal()
        yield db
    finally:
        db.close()
  • SessionLocal은 callable한 객체로 호출될 때마다 새로운 세션 객체들을 생성
    • callable이란? 호출가능한 클래스 인스턴스, 함수, 메서드 등 객체를 의미한다.
  • get_db는 호출될 때마다 db라는 변수를 생성
  • 생성된 변수 db는 데이터베이스 세션으로 작동하며 한 번의 db 연결동안 존재하며 db 연결에 대한 모든 요청/응답이 종료되면 close()된다.

 

3. orm으로 테이블 전체 테이터 불러오기

#Depends import
from fastapi import FastAPI, Depends
#Session import
from sqlalchemy.orm import Session


@app.get("/")
async def read_all(db: Session = Depends(get_db)):
    return db.query(models.Todos).all()
  • SessionLocal()로 만든 get_db 함수는 db connection을 필요로 하는 endpoint 함수에 dependency로 주입된다.
    • 엔드포인트(endpoint)란 API 서버가 제공하는 통신 채널 혹은 점점이다.
    • 각 endpoint는 고유의 URL주소를 가지게 되며, 이를 통해 해당 endpoint에 접속할 수 있다.
  • Dependency Injection이란 코드의 재활용을 위해 제공해주는 fastapi의 기능이다.
728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)