Pydantic은 Python 데이터 유효성 검사 라이브러리입니다. Pydantic을 사용하면 Python 데이터 모델에 대한 타입 힌트와 함께 입력 데이터를 자동으로 유효성 검사할 수 있습니다. 이것은 대규모 데이터 유효성 검사를 단순화하고 신뢰성 높은 코드를 작성하는 데 도움이 됩니다.
1. 기본 사용법
주로 아래와 같은 상황에서 사용합니다.
- 타입 힌트 기반 유효성 검사
- JSON 스키마 생성
- 쉬운 시리얼화 및 역직렬화
- 데이터 모델에 대한 기본값 지정
- 데이터 모델 간 상속
- 데이터 모델을 사용하여 유형 강제 변환
Pydantic을 사용하기 위해서는 다음과 같은 단계를 따르면 됩니다.
1) Pydantic 설치
Pydantic은 pip로 설치할 수 있습니다. 다음 명령을 실행하여 설치합니다.
pip install pydantic
2) 데이터 모델 정의
Pydantic을 사용하여 데이터 모델을 정의합니다. 데이터 모델은 Python 클래스로 정의되며, 필드는 클래스 변수로 정의됩니다. 각 필드에는 데이터 유형과 유효성 검사 규칙이 지정됩니다.
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
3) 데이터 모델 사용
데이터 모델을 사용하여 입력 데이터를 유효성 검사하고 데이터를 처리할 수 있습니다.
data = {"name": "Alice", "age": 25}
person = Person(**data)
print(person.dict())
이 예제에서는 데이터 딕셔너리를 사용하여 Person 클래스의 인스턴스를 만듭니다. 데이터 딕셔너리의 키와 필드 이름이 일치해야 합니다. 인스턴스를 만들 때는 ** 연산자를 사용하여 데이터 딕셔너리를 전달합니다. dict() 메서드를 사용하여 데이터를 딕셔너리로 변환할 수 있습니다.
Person 클래스의 필드 유효성 검사 규칙을 위반하는 경우, Pydantic은 예외를 발생시킵니다.
2. 추가 사용법
Pydantic은 다양한 고급 기능과 유틸리티 함수를 제공합니다. 이러한 기능을 사용하여 코드 작성을 단순화하고 유지 보수성을 향상시킬 수 있습니다.
1) 데이터 모델 간 상속
Pydantic에서는 데이터 모델 간 상속을 지원합니다. 이를 사용하여 공통 필드를 정의하는 베이스 클래스를 만들고 이를 상속받는 파생 클래스를 만들 수 있습니다.
from pydantic import BaseModel
class PersonBase(BaseModel):
name: str
age: int
class PersonCreate(PersonBase):
password: str
class Person(PersonBase):
id: int
is_active: bool = True
class Config:
orm_mode = True
이 예제에서는 PersonBase 클래스를 만들고 PersonCreate 클래스와 Person 클래스가 이를 상속합니다. PersonCreate 클래스에는 password 필드가 추가됩니다. Person 클래스에는 id 필드와 is_active 필드가 추가되며, Config 클래스를 사용하여 Pydantic이 SQLAlchemy 모델에 적합한 형식으로 데이터를 변환하도록 지정됩니다.
2) 필드 유효성 검사 규칙
Pydantic에서는 필드 유효성 검사 규칙을 지정할 수 있습니다. 이를 사용하여 필드의 유효성 검사를 자동으로 수행할 수 있습니다.
from pydantic import BaseModel, validator
class Person(BaseModel):
name: str
age: int
@validator('age')
def check_age(cls, v):
if v < 0:
raise ValueError('must be greater than zero')
return v
이 예제에서는 validator 데코레이터를 사용하여 age 필드에 대한 유효성 검사 규칙을 정의합니다. check_age 메서드는 age 필드에 대한 유효성 검사를 수행하며, 값이 0보다 작으면 예외를 발생시킵니다.
3) JSON 스키마 생성
Pydantic에서는 데이터 모델에서 JSON 스키마를 생성할 수 있습니다. 이를 사용하여 API 문서를 자동으로 생성할 수 있습니다.
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
print(Person.schema_json(indent=2))
이 예제에서는 schema_json 메서드를 사용하여 Person 클래스에서 JSON 스키마를 생성합니다. indent 인수는 JSON 스키마를 들여쓰기하는 데 사용됩니다.
'라이브러리' 카테고리의 다른 글
[파이썬] sort() 리스트, 딕셔너리 정렬 방법 (0) | 2023.03.13 |
---|---|
[파이썬] split() 함수 사용법 (0) | 2023.03.13 |
[파이썬] dict 정렬하는 3가지 방법 (0) | 2023.03.13 |
[파이썬] URL 인코딩 디코딩 예제 코드 (0) | 2023.03.11 |
[파이썬] XML 파싱, 수정, 생성 하기 (0) | 2023.03.11 |