본문 바로가기

개발이야기/Python

Data Modeling 및 Validation을 위한 Pydantic

728x90

Python은 데이터를 다루는 언어 중 아주 유연한 언어 이지만, 모델링 또는 데이터 유효성 검사 시 불편한 점이 있다.

아주 훌륭한 Dict, List 등의 자료형으로 많은 일들을 할 수 있지만 여전히 모델링을 하기엔 다소 부족한 점이 있다.

Pydantic 이란?

Pydantic은 Python에서 사용할 수 있는 데이터 직렬화 도구 이다.

이를 사용하면, 데이터 모델을 생성하고 그에 맞는 유효성 검사를 할 수 있다.

역시나 Pythonic 하게 Type hinting을 사용해 아주 간결하고 가독성이 좋게 만들 수 있게 도와 준다.

요즘 핫한 Python web framework인 FastAPI에서 데이터의 모델을 정의할 때 사용하고 있다.

Pydantic 설치

pip install pydantic

Pydantic은 간단하게 pip로 설치가 가능하다.

Pydantic 예제

아래는 기존의 Dict를 그에 맞게 정의한 데이터 모델에 적용하는 예제이다.

from pydantic import BaseModel

# 데이터 모델 정의
class User(BaseModel):
    name: str
    age: int
    email: str

# 데이터
user_data = {
    "name": "TJ",
    "age": "30", # 입력은 string
    "email": "iam@taeju.kim"
}

# 데이터 유효성 검사 및 역직렬화
user = User(**user_data)

# 유효성 검사 및 역직렬화된 데이터 사용
print(user.name)  # 출력: TJ
print(user.age)   # 출력: 30 # 출력은 int
print(user.email) # 출력: iam@taeju.kim

이 와 같이 Pydantic을 사용하면 데이터 모델을 아주 쉽게 정의하고 기존 데이터들을 적용할 수 있다.

동시에 유효성 검사도 수행해준다.

 

Pydantic은 위와 같은 기본적인 기능 외 다중 계층 모델, 사용자 정의 유효성 검사 등 편리한 기능을 많이 제공한다.

자세한 내용은 아래 공식 문서를 참조 해보자.

https://docs.pydantic.dev/latest/