Introducción
Pydantic es una poderosa biblioteca de Python para validación y análisis de datos, específicamente para trabajar con datos JSON. Su objetivo principal es hacer que la validación y el análisis de datos sean simples, intuitivos y fáciles de mantener. Este artículo presentará los conceptos básicos de Pydantic, incluido cómo definir modelos, validar datos y manejar errores.
¿Qué es Pydantic?
Pydantic es una biblioteca para la validación y el análisis de datos que nos permite definir modelos de datos y validar los datos de entrada con respecto a esos modelos. Una de sus características importantes es que convierte automáticamente los datos de entrada en objetos Python fuertemente tipados y proporciona mensajes de error claros para que podamos manejar fácilmente las fallas de validación.
Instalar Pydantic
Pydantic
Es una biblioteca de terceros de Python, podemos instalarla directamente usando el comando pip, el comando es el siguiente:
pip install pydantic
Definir el modelo Pydantic
Para usar Pydantic, primero necesita definir una clase de modelo. Una clase modelo es una clase ordinaria de Python que hereda pydantic.BaseModel
y define los campos de datos y sus tipos. He aquí un ejemplo sencillo:
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
hooby: list
En este ejemplo, definimos un Person
modelo nombrado con tres campos: name
y age
y hobby
, con tipos de cadena, entero y lista respectivamente. Pydantic utilizará estas definiciones de campo para validar los datos de entrada.
Usando modelos Pydantic
Una vez definido el modelo Pydantic, podemos usarlo para validar y analizar datos. A continuación se muestran algunos ejemplos de uso comunes:
- Crear instancia de modelo
Podemos crear instancias de modelo pasando datos de diccionario, por ejemplo:
data = {
"name": "Alice", "age": 30, "hobby": ['football']}
person = Person(**data)
print(person)
----------
#######
输出结果如下:
name='Alice' age=30 hobby=['football']
- verificación de datos
Pydantic verifica automáticamente que los datos de entrada se ajusten a la definición del modelo. Si los datos de entrada no cumplen con la definición, pydantic.ValidationError
se generará una excepción. Por ejemplo:
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)
- Obtener valor de campo
Podemos acceder al valor de un campo modelo como una propiedad de clase normal:
data = {
"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)
print(person.name)
print(person.age)
print(person.hobby)
- Convertir a diccionario
Podemos convertir la instancia del modelo en un diccionario para que pueda serializarse en datos JSON:
data = {
"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)
person_dict = person.dict()
print(person_dict)
- Manejar errores de validación
Cuando la validación falla, Pydantic proporciona información detallada del error para que podamos manejar el error. Podemos pydantic.ValidationError
acceder a la información de error detectando excepciones. Aquí hay un ejemplo:
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)
Podemos ver que el resultado contiene un mensaje de error con información detallada sobre el error de validación, lo que nos ayudará a identificar y resolver rápidamente el problema.
- Reglas de validación personalizadas
Además de la validación de tipos básica, también podemos personalizar las reglas de validación. Por ejemplo, si queremos asegurarnos de que la edad esté dentro de un rango específico, podemos @validator
definir una función de validación personalizada usando un decorador:
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
En este ejemplo, definimos un age_must_be_positive
método que verificará que la edad sea un número entero positivo.
Resumir
Pydantic
es una poderosa biblioteca de Python para validación y análisis de datos. Le permite definir fácilmente modelos de datos, validar datos, manejar errores y personalizar reglas de validación. Ya sea que esté creando una aplicación web, una API, una herramienta de línea de comandos o cualquier otro tipo de aplicación Python, puede Pydantic
ayudarnos a procesar datos más fácilmente. Pydantic
¡Espero que este artículo sea útil para que todos comiencen !