← Назад ко всем вопросам

Какие данные валидируют с помощью Pydantic

1️⃣ Как кратко ответить

Pydantic валидирует и преобразует данные в Python, обеспечивая проверку типов, значений и структур данных. Он поддерживает встроенные типы Python, такие как int, float, str, list, а также сложные структуры, включая вложенные модели и пользовательские типы.

2️⃣ Подробное объяснение темы

Pydantic использует Python-аннотации типов для определения структуры данных и их валидации. Он поддерживает как простые, так и сложные типы данных, включая:

  • Простые типы: int, float, str, bool
  • Коллекции: list, tuple, set, dict
  • Вложенные модели: возможность создавать сложные структуры данных
  • Пользовательские типы: возможность определения собственных типов и правил валидации

Пример кода

from pydantic import BaseModel, ValidationError, conint
​
# Определение модели данных с использованием Pydantic
class User(BaseModel):
    id: conint(gt=0)  # Поле id должно быть целым числом больше 0
    name: str  # Поле name должно быть строкой
    age: int  # Поле age должно быть целым числом
​
# Создание экземпляра модели с корректными данными
user = User(id=1, name='Alice', age=30)
​
# Попытка создать экземпляр модели с некорректными данными
try:
    user = User(id=-1, name='Bob', age='thirty')
except ValidationError as e:
    print(e)
​
# Комментарии к коду:
# 1. Импортируем необходимые классы из Pydantic.
# 2. Определяем класс User, наследующий от BaseModel, который описывает структуру данных.
# 3. Поле id должно быть целым числом больше 0, что задается с помощью conint(gt=0).
# 4. Поле name должно быть строкой.
# 5. Поле age должно быть целым числом.
# 6. Создаем экземпляр User с корректными данными.
# 7. Пытаемся создать экземпляр User с некорректными данными, что вызывает ValidationError.
# 8. Обрабатываем ValidationError и выводим сообщение об ошибке.

Pydantic автоматически проверяет данные при создании экземпляра модели. Если данные не соответствуют заданным типам или ограничениям, выбрасывается исключение ValidationError, содержащее информацию о том, какие поля не прошли валидацию и почему.

Тема: Python
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки