メインコンテンツへスキップ

はじめに

  • この記事では、pydantic を使ったデータ検証について解説します。Pydantic は Rust で構築された Python ライブラリです。
  • はじめる前に、お使いの環境に Python と Pydantic ライブラリがインストールされていることを確認してください。以下の pydantic のインストールコマンドを確認してください。
pip install pydantic

モデルの作成

  • まず、検証を始めるために、pydantic.BaseModel をインポートしてクラスに継承させる必要があります。この例では Person という名前のクラスを作成し、name、age、e-mail を持たせます。
from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int
    email: str
  • このクラスをインスタンス化すると、pydantic はパラメーター nameemail が文字列であること、age が整数であることを検証します。

モデルの使用

  • 作成できたので、クラスをインスタンス化します。データを含む辞書を作成し、それをクラスに展開して渡します。
data = {
    "name": "John",
    "age": 19,
    "email": "john@gmail.com"
}
person = Person(**data)
  • 上記の例では、すべての パラメーター が正しい型になっているため、エラーは発生しません。次に、検証が機能するかどうかを確認するために、誤ったデータを作成します。
data = {
    "name": "John",
    "age": "19",
    "email": "john@gmail.com"
}
person = Person(**data)
  • 上記の例では、age整数 である必要があり 文字列 として指定できないため、ValidationError エラーが発生します。

dataclass の作成

  • pydantic を使って dataclass を作成することもできます。これは標準の Python の dataclass に似ていますが、BaseModel のような検証を備えています。
from pydantic import dataclass

@dataclass
class Person:
    name: str
    age: int
    email: str
  • agestring を渡すと、int に変換されます。
Pydantic は再帰的な検証をサポートしています。つまり、ネストされたモデルを検証する際には、内部のモデルも検証します。あるクラスが Person のリスト people: list[Person] を持つ場合、リスト内の各項目をチェックし、それぞれを Person に変換します。

その他

  • Pydantic には、e-mail の検証やフォールバック用の timezone パッケージなどの追加機能があります。これらをインストールするには、次のコマンドを実行する必要があります。
pip install pydantic[email]
pip install pydantic[timezone]
  • 次のコマンドを実行すると、両方を一度にインストールできます。
pip install pydantic[email,timezone]
  • Pydantic[email] は、メールを処理するためのクラスを提供し、正規化して user@domain.tld の形式を検証します。このために、pydantic はこの検証を行う EmailStr クラスを提供しています。
from pydantic import dataclass, EmailStr

@dataclass
class Person:
    name: str
    age: int
    email: EmailStr

この記事は役に立ちましたか?

  • 私たちは可能な限り最良のサポートを提供するため、細心の注意を払ってこのコンテンツを作成しました。 この記事が少しでもお役に立ったなら、ぜひ私たちの活動を応援してください。レビューを残していただけると、あなたにとって何が最も重要かを理解する助けになります。

Google レビュー

Google レビューにあなたのレビューを残してください。

Trustpilot

Trustpilot にあなたのレビューを残してください。