๋Œ€ํšŒ ํ”„๋กœ์ ํŠธ/๋ฐ์ดํ„ฐ์…‹ ๋ชจ์Œ

fastAPI pydamic์œผ๋กœ ์Šคํ‚ค๋งˆ ์„ค์ •ํ•˜๊ธฐ

์ฃผ์˜ ๐Ÿฑ 2024. 4. 19. 14:52
728x90

schema.py ์— Pydantic ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ ๋ฐ ์‘๋‹ต ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜

์˜ˆ์‹œ:

from pydantic import BaseModel
from typing import Optional

class JapaneseBase(BaseModel):
    type:  Optional[str] = None
    letter: str
    pronounciation: str
    audio:  Optional[str] = None
    lesson: Optional[int] = None 
    img: Optional[str] = None  # ์„ ํƒ์  ํ•„๋“œ
    vid: Optional[str] = None  # ์„ ํƒ์  ํ•„๋“œ

class JapaneseCreate(JapaneseBase):
    pass

 

๋‹ค์‹œ routers/ ํด๋”์˜ ํ•ด๋‹น ํŒŒ์ผ๋กœ๊ฐ€์„œ, ๋ผ์šฐํ„ฐ์— pydamic ์ ์šฉํ•˜๊ธฐ

@router.get("/japanese", response_model=list[schemas.JapaneseCreate])
def letter_list(db: Session = Depends(get_db)):
    #db = SessionLocal()
    db_items = db.query(Japanese).all()
    #db.close()
    print("db_items",db_items)
    return db_items

db.close(), db = SessionLocal() ๋ฅผ ์•ˆ์จ๋„ ๋˜๊ณ , ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋”์šฑ ์‰ฝ๋‹ค

๋งŒ์•ฝ ๋””๋น„์—์„œ ํŠน์ • ์—ด๋งŒ ๋ฝ‘๊ณ ์‹ถ๋‹ค?

์Šคํ‚ค๋งˆํŒŒ์ผ์—์„œ ๋ชจ๋ธ ๊ตฌ์กฐ๋งŒ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค!

๋ฐ˜์‘ํ˜•