導入
Pydantic は、データの検証と解析、特に JSON データの操作のための強力な Python ライブラリです。その主な目標は、データの検証と解析をシンプルかつ直観的かつ保守可能にすることです。この記事では、モデルの定義方法、データの検証方法、エラーの処理方法など、Pydantic の基本を紹介します。
ピダンティックとは何ですか?
Pydantic は、データ モデルを定義し、それらのモデルに対して入力データを検証できるようにするデータ検証および解析用のライブラリです。その重要な機能の 1 つは、入力データを厳密に型指定された Python オブジェクトに自動的に変換し、検証の失敗を簡単に処理できるように明確なエラー メッセージを提供することです。
Pydantic をインストールする
Pydantic
これは Python のサードパーティ ライブラリです。pip コマンドを使用して直接インストールできます。コマンドは次のとおりです。
pip install pydantic
Pydantic モデルを定義する
Pydantic を使用するには、まずモデル クラスを定義する必要があります。pydantic.BaseModel
モデル クラスは、データ フィールドとその型を継承し、定義する通常の Python クラスです。簡単な例を次に示します。
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
hooby: list
この例では、と、Person
という 3 つのフィールドをそれぞれ文字列、整数、およびリスト型で持つ名前のモデルを定義します。Pydantic はこれらのフィールド定義を使用して入力データを検証します。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
役立つことを願っています。