개발일기

Python - Pydantic Model 생성 본문

프로그래밍 언어/Python

Python - Pydantic Model 생성

Flashback 2022. 1. 25. 17:11
728x90
반응형

 

0. Pydantic Model이란?

Pydantic Model을 통하여 클래스 모델에 속해있는 값들에 적합한 자료형을 코드에 선언하고 자료형을 검증하는 것을 도와준다. 선언한 자료형과 일치하는 않는 자료형을 가진 값이 대입되는 경우, 데이터 유효성 오류가 발생한다. ( Validation Error )

 

1. Pydantic 설치

from pydantic import BaseModel
# python코드 상단에 pydantic의 BaseModel을 import한다.

Python 3.6버전 이상부터는 pydantic을 설치하지 않고 import만 하여도 사용가능하다. 그 이하 버전일 경우, pydantic을 pip을 통해 설치를 한 후, 사용할 수 있다.

pip install pydantic

 

2. Pydantic 모델 선언

from pydantic import BaseModel
from typing import List, Optional

# Juice라는 모델을 타입힌팅
class Juice(BaseModel) :
    id : int
    type : str
    size : int
    count : int
    price : int
    nutrient : Optional[List[str]] = None

# python 3.6 이상

Jucie라는 모델 클래스를 생성하고, id, type 등의 해당 모델에 포함될 속성들을 추가하여 작성하였다. id와 type등의 뒤에 붙어 있는 : int와 : str은 각 자료형의 타입을 선언해준 것이다. id에는 정수형의 값이 들어가야 하며, type에는 문자형의 값이 들어가야 한다.

 

마지막 nutrient 속성에 특이한 부분을 확인할 수 있다. 바로 Optional이라는 부분인데, Optional은 해당 속성에 값이 필수적으로 들어가지 않아도 되는 경우에 추가한다. nutrient속성을 문자형이 들어가는 배열 속성으로 타입 선언하였는데, 이 속성에 값이 들어가지 않을 경우 None을 기본값으로 설정하여 대입한다는 것을 뜻한다. 

말 그대로 값을 추가하여도 상관없고, 값을 추가하지 않은 경우에는 미리 선언한 값을 대입하겠다는 것을 뜻한다.

 

최근에 나온 Python 3.10에서는 Optional부분과 타입을 더 간결하게 사용할 수 있다.

from pydantic import BaseModel

# Juice라는 모델을 타입힌팅
class Juice(BaseModel) :
    id : int
    type : str
    size : int
    count : int
    price : int
    nutrient : list[str] | None = None
    
# python 3.10 이상
# from typing import Optional, List 부분이 사라졌다
728x90
반응형
Comments