[python] pydantic - field_validator

gunny·2024년 4월 1일
0

Python

목록 보기
15/29

pydantic

  • 데이터 유효성 검사 및 직렬화를 위한 python의 모델 검증 라이브러리
    데이터의 유효성을 검사하고 모델을 만들기 위해 pydantic.BaseModel을 사용한다.
    BaseModel을 사용해 필드를 정의하고 해당 필드에 대한 유효성 검사를 수행한다.

@validator

  • pydantic에서 @validator 데코레이터를 사용해서 사용자 정의 유효성 검사 함수를 정의할 수 있다.
    해당 필드의 값을 검증하고, 필드에 대한 유효성 검사를 통과하지 못할 경우 예외를 발생시킨다.
  • 때로는 특정 필드가 다른 필드와 상호작용 하거나 특정 조건을 충족해야 하는 경우가 있다. 이때 @validator 대신 @root_validator를 사용해 전체 모델을 대상으로 유효성 검사를 수행할 수 있다.

@field_validator

  • pydantic 에서 사용할 수 있는 또 다른 유효성 검사 방법
    필드 레벨에서 수행되는 유효성 검사를 정의하는데 사용한다.
  • 해당 필드의 값만을 검사하고 다른 필드와 상호작용하지 않는 유효성 검사를 수행할 수 있다.

예를 들면

from pydantic import BaseModel, Field, ValidationError, root_validator, validator


class Item(BaseModel):
	name : str
    price : float = Field(..., gt=0)
    
    # price 필드에 필요한 field_validator 정의
    @validator('price')
    def check_price(cls, v):
    	if v <= 0:
        	raise ValueError('price must be greater than 0')
            return v
            
item1 = Item(name='apple', price=1.5)
print(item1)

try : 
	item2 = Item(name='banana', price=-2)
except ValidationError as e:
	print(e)

위의 Item 모델에는 'name', 'price' 두 개의 필드가 있다.
'price' 필드는 0보다 큰지 확인하는 'field_validator'가 정의되어 있다.
이 유효성 검사는 해당 필드의 값만을 저장하며 다른 필드와 상호작용하지 않는다.

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글