Pydantic — это мощная библиотека Python для проверки и анализа данных, особенно для работы с данными JSON. Его основная цель — сделать проверку и анализ данных простыми, интуитивно понятными и удобными в обслуживании. Эта статья познакомит вас с основами Pydantic, в том числе с тем, как определять модели, проверять данные и обрабатывать ошибки.
Pydantic — это библиотека для проверки и анализа данных, которая позволяет нам определять модели данных и проверять входные данные на соответствие этим моделям. Одной из его важных особенностей является то, что он автоматически преобразует входные данные в строго типизированные объекты Python и предоставляет четкие сообщения об ошибках, чтобы мы могли легко обрабатывать ошибки проверки.
Pydantic
даPythonсторонняя библиотека,Мы можем напрямую использовать команду pip для установки.,Команда выглядит следующим образом:
pip install pydantic
Чтобы использовать В Pydantic сначала необходимо определить класс модели. Модельный класс обычный Python класс, который наследуется от pydantic.BaseModel
,И определение полей данных и их типов. Вот простой пример:
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
hooby: list
В этом примере мы определяем Person
из Модель,у него три поля:name
и age
а такжеhobby
,иметь строки соответственно、целое числоа такжетип списка。Pydantic Эти определения полей будут использоваться для проверки входных данных.
После определения модели Pydantic мы можем использовать ее для проверки и анализа данных. Вот несколько распространенных примеров использования:
Мы можем создавать экземпляры модели, передавая данные словаря, например:
data = {"name": "Alice", "age": 30, "hobby": ['football']}
person = Person(**data)
print(person)
----------
#######
Вывод следующий:
name='Alice' age=30 hobby=['football']
Pydantic Он автоматически проверяет, соответствуют ли входные данные определению модели. Если входные данные не соответствуют определению, будут подняты pydantic.ValidationError
аномальный. Например:
data = {"name": "Bob", "age": "thirty", "hobby": "basketball"}
person = Person(**data) # Здесь будет вызвано исключение ValidationError.
----------
При запуске скрипта появляется следующее сообщение об ошибке:
person = Person(**data) # Здесь будет вызвано исключение ValidationError.
File "pydantic\main.py", line 331, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 2 validation errors for Person
age
value is not a valid integer (type=type_error.integer)
hobby
value is not a valid list (type=type_error.list)
Мы можем получить доступ к значению поля модели так же, как к обычному свойству класса:
data = {"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)
print(person.name)
print(person.age)
print(person.hobby)
Мы можем преобразовать экземпляр модели в словарь, чтобы его можно было сериализовать в данные JSON:
data = {"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)
person_dict = person.dict()
print(person_dict)
Если проверка не удалась, Pydantic Предоставляется подробная информация об ошибке, чтобы мы могли ее обработать. Мы можем захватить pydantic.ValidationError
Исключение для доступа к информации об ошибке. Вот пример:
from pydantic import BaseModel
from pydantic import ValidationError
class Person(BaseModel):
name: str
age: int
hobby: list
try:
data = {"name": "Muller", "age": "thirty", "hobby": ['football', 'reading', 'running']}
person = Person(**data)
except ValidationError as e:
print(e)
-------------
Запустите скрипт, и результаты будут следующими:
1 validation error for Person
age
value is not a valid integer (type=type_error.integer)
Мы видим, что выходные данные содержат сообщение об ошибке с подробной информацией о сбое проверки, что поможет нам быстро выявить и решить проблему.
В дополнение к базовой проверке типов мы также можем настраивать правила проверки. Например, если мы хотим убедиться, что возраст находится в определенном диапазоне, мы можем использовать @validator
Декоратор определяет пользовательскую функцию проверки:
from pydantic import validator
class Person(BaseModel):
name: str
age: int
hobby:list
@validator("age")
def age_must_be_positive(cls, age):
if age < 0:
raise ValueError("Age must be a positive integer")
return age
В этом примере мы определяем age_must_be_positive
Метод, который проверит, что возраст является положительным целым числом.
Pydantic
является мощным Python Библиотека для проверки и парсинга данных. Это позволяет легко определять данные Модели, проверять данные, обрабатывать ошибки и Пользовательские правила проверки. Будь то строительство Web Приложение, API, инструмент командной строки или что-то еще Python приложение,Pydantic
Все это может помочь нам легче обрабатывать данные. Я надеюсь, что эта статья поможет вам начать работу Pydantic
Помогает!