Einführung
Pydantic ist eine leistungsstarke Python-Bibliothek zur Datenvalidierung und -analyse, insbesondere für die Arbeit mit JSON-Daten. Sein Hauptziel besteht darin, die Datenvalidierung und -analyse einfach, intuitiv und wartbar zu machen. In diesem Artikel werden die Grundlagen von Pydantic vorgestellt, einschließlich der Definition von Modellen, der Validierung von Daten und der Behandlung von Fehlern.
Was ist Pydantic?
Pydantic ist eine Bibliothek zur Datenvalidierung und -analyse, die es uns ermöglicht, Datenmodelle zu definieren und Eingabedaten anhand dieser Modelle zu validieren. Eine seiner wichtigen Funktionen besteht darin, dass es Eingabedaten automatisch in stark typisierte Python-Objekte konvertiert und klare Fehlermeldungen bereitstellt, sodass wir Validierungsfehler problemlos beheben können.
Installieren Sie Pydantic
Pydantic
Es handelt sich um eine Python-Bibliothek eines Drittanbieters. Wir können sie direkt mit dem Befehl pip installieren. Der Befehl lautet wie folgt:
pip install pydantic
Definieren Sie das Pydantic-Modell
Um Pydantic verwenden zu können, müssen Sie zunächst eine Modellklasse definieren. Eine Modellklasse ist eine gewöhnliche Python-Klasse, die von pydantic.BaseModel
den Datenfeldern und ihren Typen erbt und diese definiert. Hier ist ein einfaches Beispiel:
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
hooby: list
In diesem Beispiel definieren wir ein Person
Modell mit dem Namen drei Felder: name
and age
und hobby
mit den Typen String, Integer und List. Pydantic verwendet diese Felddefinitionen, um Eingabedaten zu validieren.
Verwendung von Pydantic-Modellen
Sobald das Pydantic-Modell definiert ist, können wir es zum Validieren und Analysieren von Daten verwenden. Hier sind einige häufige Anwendungsbeispiele:
- Modellinstanz erstellen
Wir können Modellinstanzen erstellen, indem wir Wörterbuchdaten übergeben, zum Beispiel:
data = {
"name": "Alice", "age": 30, "hobby": ['football']}
person = Person(**data)
print(person)
----------
#######
输出结果如下:
name='Alice' age=30 hobby=['football']
- Datenüberprüfung
Pydantic überprüft automatisch, ob die Eingabedaten der Definition des Modells entsprechen. Wenn die Eingabedaten nicht der Definition entsprechen, pydantic.ValidationError
wird eine Ausnahme ausgelöst. Zum Beispiel:
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)
- Feldwert abrufen
Wir können auf den Wert eines Modellfelds wie auf eine normale Klasseneigenschaft zugreifen:
data = {
"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)
print(person.name)
print(person.age)
print(person.hobby)
- In Wörterbuch konvertieren
Wir können die Modellinstanz in ein Wörterbuch konvertieren, damit sie in JSON-Daten serialisiert werden kann:
data = {
"name": "Muller", "age": 30, "hobby": ['football', 'reading', 'running']}
person = Person(**data)
person_dict = person.dict()
print(person_dict)
- Behandeln Sie Validierungsfehler
Wenn die Validierung fehlschlägt, stellt Pydantic detaillierte Fehlerinformationen bereit, damit wir den Fehler beheben können. Wir können pydantic.ValidationError
auf Fehlerinformationen zugreifen, indem wir Ausnahmen abfangen. Hier ist ein Beispiel:
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)
Wir können sehen, dass die Ausgabe eine Fehlermeldung mit detaillierten Informationen zum Validierungsfehler enthält, die uns hilft, das Problem schnell zu identifizieren und zu lösen.
- Benutzerdefinierte Validierungsregeln
Zusätzlich zur grundlegenden Typvalidierung können wir auch Validierungsregeln anpassen. Wenn wir beispielsweise sicherstellen möchten, dass das Alter innerhalb eines bestimmten Bereichs liegt, können wir @validator
mithilfe eines Dekorators eine benutzerdefinierte Validierungsfunktion definieren:
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
In diesem Beispiel definieren wir eine age_must_be_positive
Methode, die überprüft, ob das Alter eine positive ganze Zahl ist.
Zusammenfassen
Pydantic
ist eine leistungsstarke Python-Bibliothek zur Datenvalidierung und -analyse. Damit können Sie ganz einfach Datenmodelle definieren, Daten validieren, Fehler behandeln und Validierungsregeln anpassen. Unabhängig davon, ob Sie eine Webanwendung, eine API, ein Befehlszeilentool oder eine andere Art von Python-Anwendung erstellen, Pydantic
kann es uns dabei helfen, Daten einfacher zu verarbeiten. Ich hoffe, dass dieser Artikel allen den Einstieg Pydantic
erleichtern wird !