BaseModel
은 Pydantic 라이브러리에서 제공하는 기본 모델 클래스BaseModel
을 사용하면 데이터 모델을 정의하고, 해당 모델의 객체를 생성할 때 유효성을 검사할 수 있다.BaseModel
이 제공하는 기능BaseModel
을 사용하여 각 필드의 데이터 유형과 기타 속성을 정의할 수 있다. 예를 들어 문자열, 정수, 부동 소수점 숫자, 불리언 값 등을 포함해 다양한 데이터 유형을 지원한다.ValidationError
가 발생한다.BaseModel
을 사용해 데이터 모델을 정의하기from pydantic import BaseModel, Field
class User(BaseModel):
id: int
name: str
email: str
age: int = Field(..., ge=0)
# 데이터 유효성 검사 및 객체 생성
user_data = {"id": 1, "name": "John",
"email" : "john@example.com", "age":30}
user = User(**user_data)
print(user)
위 예시에서 'User' 클래스는 BaseModel을 상속받아 사용자 정보를 나타내는 데이터 모델을 정의한다.
필수 필드인 'id', 'name', 'email', 과 선택적으로 지정된 'age' 필드가 있다.(age는 필수적인 필드이기도 하지만 선택적인 필드이기도 하다. 기본값은 지정되어 있지 않아 반드시 값을 제공해야 하지만, 값이 제공되지 않을 경우 0이사의 값이 자동으로 할당된다.) 'age' 필드에는 0 이상인 값을 갖는지 확인하는 유효성 검사 규칙이 설정되어 있다.
데이터 유효성 검사를 위해 'User' 클래스를 사용해 객체를 생성할 때 입력된 데이터가 모델의 정의에 따라 유효한지 자동으로 검사된다.
필수 필드
, 선택적 필드
from pydantic import BaseModel
class Order(BaseModel):
user_name: str
address: str
phone_number: str
itmes: list
email: str = None
delivery_note: str = None
payment_method: str = None
위의 Order 클래스는 주문 정보를 나타내는 데이터 모델을 정의한다.
사용자 이름, 주소, 전화번호, 주문한 상품 목록은 필수 필드로 정의되어 있다.
그 외에 이메일, 배송 메모, 결제 수단은 선택적 필드로 정의되어 있는데 이 필드들은 초기화할 때 값을 제공하지 않아 기본값으로 None이 할당된다.
Field(..., ge=0)
ge
는 Pydantic의 Field
클래스에서 사용되는 유효성 검사 규칙 중 하나이다. 'greater than or equal'의 약어로 주어진 값 이상이어야 함을 나타낸다.예를 들어 Field(..., ge=0)은 해당 필드의 값이 0이상여야 유효하다는 것을 나타낸다. 즉, 음수나 0보다 작은 값은 유효하지 않다.
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
eamil: str
age : int = Field(..., ge=0)
위 코드에서는 'age' 필드가 0이상의 값이여야 유효하고, 이는 음수값이거나 0보다 작은 값이 입력되는 것을 방지한다.