파이썬 데이터 검증을 쉽게 해주는 Pydantic 라이브러리 사용법
Python으로 API를 다루거나 JSON 데이터를 처리하다 보면, 입력값을 검증하고 타입을 체크하는 일이 매우 중요해집니다.
이럴 때 유용하게 사용할 수 있는 도구가 바로 Pydantic입니다.
✅ Pydantic이란?
Pydantic은 타입 힌트를 기반으로 데이터 유효성 검사를 자동으로 처리해주는 파이썬 라이브러리입니다.
마치 dataclass
처럼 클래스를 정의하면, 자동으로 필드의 타입을 체크하고 잘못된 값이 들어올 경우 에러를 발생시켜 줍니다.
FastAPI와 같은 웹 프레임워크에서 요청/응답 데이터를 검증할 때도 많이 사용됩니다.
✅ 설치 방법
pip install pydantic
최신 버전을 설치하려면 다음 명령어를 사용할 수 있습니다.
pip install --upgrade pydantic
✅ 기본 사용법
1. 데이터 모델 정의
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
email: str
위 코드처럼 BaseModel
을 상속받아 클래스 정의 시, 각 필드에 대한 자동 타입 검증이 적용됩니다.
2. 유효한 데이터 입력
user = User(name="김개발", age=30, email="dev@example.com")
print(user)
3. 잘못된 데이터 검증
try:
user = User(name="김개발", age="스물다섯", email="잘못된 이메일")
except Exception as e:
print(e)
출력 결과:
2 validation errors for User
age
value is not a valid integer (type=type_error.integer)
email
value is not a valid email address (type=value_error.email)
숫자가 아닌 나이, 이메일 형식 오류를 Pydantic이 자동으로 잡아주는 것을 확인할 수 있습니다.
✅ 주요 기능
1. 기본값 설정
class User(BaseModel):
name: str
age: int = 25 # 기본값 지정
email: str
age
를 생략하면 기본값 25가 자동으로 설정됩니다.
2. 데이터 자동 변환
class Product(BaseModel):
name: str
price: float
in_stock: bool
product = Product(name="Laptop", price="1999.99", in_stock="True")
print(product)
출력:
name='Laptop' price=1999.99 in_stock=True
문자열로 들어간 숫자와 불리언 값이 자동으로 변환된 것을 확인할 수 있습니다.
3. 필드 조건 설정 (유효성 제약)
from pydantic import BaseModel, Field
class Person(BaseModel):
name: str = Field(..., min_length=2, max_length=10)
age: int = Field(..., ge=18, le=99)
person = Person(name="홍길동", age=25)
print(person)
min_length
, max_length
, ge
, le
등 다양한 제약 조건을 쉽게 설정할 수 있습니다.
✅ 정리
- Pydantic은 Python에서 타입 힌트를 활용하여 데이터 검증을 간단하게 구현할 수 있도록 도와주는 라이브러리입니다.
- 자동 타입 캐스팅, 유효성 검사, 기본값 지정, 조건 필터링 등 다양한 기능을 갖추고 있어 JSON 기반 데이터 처리나 API 응답 검증에 매우 적합합니다.
- 코드를 더 안전하고, 명확하고, 유지보수하기 쉬운 구조로 만들어줍니다.
데이터 입력이 많은 애플리케이션을 개발할 때, 특히 외부에서 입력되는 JSON 또는 사용자 요청 값을 신뢰할 수 없는 경우 Pydantic을 사용하여 안정성을 확보하는 것을 추천합니다.
※ 본 포스트는 Python 3.12 환경을 기준으로 작성되었습니다.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
FastAPI로 빠르고 간단한 파이썬 API 서버 만들기 - 설치부터 기본 예제까지 (0) | 2025.03.20 |
---|---|
파이썬 로그 관리, loguru로 더 쉽게! 설정부터 파일 저장까지 정리 (0) | 2025.03.20 |
파이썬으로 네이버 주식 데이터 스크래핑하는 방법 (BeautifulSoup 사용) (0) | 2025.03.19 |
[Python] Pillow 라이브러리로 이미지 처리하는 5가지 방법 (0) | 2025.03.19 |
파이썬으로 PDF 파일 처리하기: PyPDF2, pdfplumber 사용법 정리 (0) | 2025.03.18 |