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
'Develop > FastAPI' 카테고리의 다른 글
FastAPI Post Request를 통한 DB 저장 - 39 (0) | 2023.01.04 |
---|---|
FastAPI sqlalchemy filter 사용하기(select) - 38 (0) | 2023.01.01 |
FastAPI SQLite3 Setting Up Todos - 36 (0) | 2022.12.30 |
FastAPI SQL Queries Introduction - 35 (0) | 2022.12.30 |
FastAPI Installation of SQLite3 Terminal (Mac) - 34 (0) | 2022.12.30 |