
Pydantic은 데이터 검증을 위한 Python 라이브러리로, FastAPI, SQLAlchemy, 데이터 직렬화 등 다양한 데이터 처리와 API 개발에서 유용하게 활용된다.
데이터 엔지니어링을 하다 보면 데이터를 이동시키는 일이 잦다. 예를 들어, ETL/ELT 과정에서 로컬, 데이터베이스(DB), 데이터 웨어하우스(DW) 간 데이터를 주고받는 과정에서 데이터 타입이 깨지는 문제가 자주 발생할 수 있다. 이를 미리 인식하지 못하면, 나중에 문제를 발견했을 때 디버깅에 많은 시간을 허비하게 된다. 따라서 데이터를 읽고 작업을 수행하기 전에 데이터 검증을 습관화하는 것이 중요하다.
# 전체 pydantic 라이브러리
pip install pydantic
# 아래 import에서 EmailStr을 호출하기 위함
pip install email-validator
from pydantic import BaseModel, Field, EmailStr,
class User(BaseModel):
id: int
name: str = Field(min=3)
age: int = Field(gt=18)
height: int = Field(gt=150, lt=200)
username: str = Field(min_length=5)
email: EmailStr
@field_validator("username")
def validate_username(cls, value):
if not re.match("^[a-zA-Z0-9_]+$", value):
raise ValueError("Username에 알파벳 또는 숫자만 입력할 수 있습니다.")
if value in usenames:
raise ValueError("Username must be unique")
usernames.append(value)
return value
파이썬에서 SQLAlchemy와 같은 ORM을 사용해본적이 있다면 Pydantic이 얼마나 편한지 알 것이다.
모든 데이터 검증 방법은 Pydantic의 BaseModel을 사용하여 클래스를 만든다. 클래스 내에서는 각 변수와 데이터 타입 및 constraint를 설정한다.
@field_validator("<변수명>")은 나만의 검증 방법을 새로 구현하고 싶을 때 사용하면 된다.