설명: Pydantic은 Python에서 데이터 유효성을 검사하고 데이터 클래스를 쉽게 정의할 수 있도록 설계된 라이브러리입니다. Python의 타입 힌팅을 기반으로 입력 데이터를 자동으로 검증하며, FastAPI와 같은 프레임워크에서 데이터 유효성 검사에 널리 사용됩니다.
주요 특징:
예시 코드:
python
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
email: str
user = User(id=1, name="Alice", email="[email protected]")
print(user)
활용법: FastAPI에서 요청 데이터를 검증하거나, 스키마 정의 및 데이터 직렬화.
설명: Pydantic은 기본 모델 생성, 상속, 복합 모델, 데이터 직렬화를 지원합니다.
예시 코드:
python
from pydantic import BaseModel
class Address(BaseModel):
city: str
zipcode: str
class User(BaseModel):
id: int
name: str
address: Address
user = User(id=1, name="Alice", address={"city": "New York", "zipcode": "10001"})
print(user.json()) # JSON 직렬화
활용법: 데이터 간 계층적 관계 표현, JSON 직렬화/역직렬화 처리.
설명: Pydantic은 타입 힌트를 기반으로 데이터를 검증하며, 검증 실패 시 ValidationError
를 발생시킵니다. Strict
타입을 사용하면 더 엄격한 검증이 가능합니다.
예시 코드:
python
코드 복사
from pydantic import BaseModel, StrictInt
class User(BaseModel):
id: StrictInt
name: str
try:
user = User(id="1", name="Alice") # StrictInt는 문자열 허용 안함
except ValidationError as e:
print(e.json())
활용법: 입력 데이터가 예상된 형식인지 확인하여 오류를 방지.
설명: Field
를 사용하여 기본값 설정, 제한 조건 추가, 설명 등을 정의할 수 있습니다.
예시 코드:
python
코드 복사
from pydantic import BaseModel, Field
class User(BaseModel):
id: int = Field(..., ge=1, description="User ID는 1 이상의 정수여야 합니다.")
name: str = Field(..., max_length=50, description="이름은 50자를 초과할 수 없습니다.")
user = User(id=10, name="Alice")
print(user)
활용법: 필드 제한 조건을 명확히 정의해 데이터의 일관성 유지.