Как проверять входные данные с помощью Pydantic?
- Зачем нужен Pydantic?
- Как валидировать JSON в Python?
Pydantic проверяет и преобразует данные во время выполнения по аннотациям класса-наследника BaseModel: строку «42» превратит в int, а «abc» для int отклонит с понятной ошибкой ValidationError, где указано поле и причина. Ограничения задают через Field (min_length, ge, le) и валидаторы. Используют для входящих запросов API, конфигурации, ответов внешних сервисов и LLM.
- model_validate(dict) и model_validate_json(str) — создать из данных
- model_dump() и model_dump_json() — обратно в словарь и JSON
- Лишние поля по умолчанию игнорируются, можно запретить
А ещё FastAPI использует Pydantic для проверки тела запроса и описания API
Подробно
Пример:
from pydantic import BaseModel, Field, EmailStr
class Signup(BaseModel):
name: str = Field(min_length=1, max_length=100)
email: EmailStr
age: int = Field(ge=14)
data = {"name": "Анна", "email": "a@example.ru", "age": "25"}
user = Signup.model_validate(data) # age станет int 25
При ошибке:
1 validation error for Signup
age
Input should be greater than or equal to 14
Чем отличается от dataclass: dataclass не проверяет типы, а Pydantic проверяет и преобразует.
Что хотят услышать
- Проверка и преобразование во время выполнения.
- BaseModel, Field, ValidationError.
- Сериализация обратно.
- Отличие от dataclass.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Проверяет типы только статически, как mypy, а во время выполнения данные не трогает
- ✗Отличается от dataclass только синтаксисом объявления полей, проверок не добавляет
- ✗Не умеет разбирать JSON напрямую — сначала нужно вручную получить словарь Python
- ✓Проверяет и преобразует данные при выполнении, ошибка — ValidationError
Разбор темы
- Аннотации типов, mypy и Pydantic
Что дают аннотации и кто их проверяет, как аннотировать коллекции, Optional и объединения, обобщённые типы, mypy в проекте, проверка данных Pydantic.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.