marshmallowのrequiredオプションの使い方

marshmallowのrequiredオプションの使い方Marshmallow
ゆうすけ
ゆうすけ

marshmallowライブラリrequiredオプションってどう使うんですか?

資格マフィア
資格マフィア

marshmallowでschemaを定義するときに、
requiredオプションをつけることで必須チェックを行うことができるぞ。

 

✔️ 本記事のテーマ

marshmallowライブラリのrequiredオプションについて

 

✔️ 読者さんへの前置きメッセージ

本記事は「marshmallowライブラリのrequiredオプション」について書いています。

 

この記事を読むことで
「requiredオプションの使い方 や marshmallowライブラリの必須チェック」
について理解できます。

 

marshmallowはschema定義用のPythonライブラリです。

 

marshmallowライブラリでは、
各schemaに対して、その項目が必須かどうかを定義することができます。

 

本記事では、そんなmarshmallowの必須定義について解説していきます。

 

それでは、解説していきましょう。

 

marshmallowのrequiredオプションとは?

marshmallowのrequiredオプションとは?

一言で説明すると、必須チェックの定義です。

 

schemaでrequiredオプションをつけることで
schemaでデータを読み込む際に
「requiredオプションが付けられた項目が必ずあること」が条件になります。

 

marshmallowでschemaを定義してデータを読み込む場合、
「項目があればオブジェクトに変換し、項目がなければ特に何もしない」
というのがmarshmallowのデフォルトの動作です。

 

ここに、requiredオプションをつけると、
「項目があればオブジェクトに変換し、項目がなければvalidation errorを発生させる」
という動作になります。

 

marshmallowのrequiredオプションの使い方

marshmallowのrequiredオプションの使い方

実際にmarshmallowのrequiredオプションを使ってみましょう。

required=True

とすることで必須チェックをONにして定義することができます。

 

試しに、marshmallowで以下のようなschema定義をしましょう。

from marshmallow import Schema, fields


class ParsonSchema(Schema):

    name = fields.Str()
    age = fields.Int()

 

このschemaは name, age という2項目をschemaとしてデータを読み込みます。

 

このようなschemaを定義することで、次のJSONを読み込むことができます。

data = ParsonSchema().load({"name": "Taro", "age": 20})

print(data)
# {'name': 'Taro', 'age': 20}

 

さらに、以下のような項目の欠けたJSONも読み込むことができます。

data = ParsonSchema().load({"name": "Suzuki"})

print(data)
# {'name': 'Suzuki'}

 

ここで、schema定義の全ての項目に、requiredオプションによる必須チェックをつけてみます。

from marshmallow import Schema, fields


class ParsonSchema(Schema):

    name = fields.Str(required=True)
    age = fields.Int(required=True)

 

このようなschema定義をすると、
先ほどの項目が欠けたデータを読み込むと、validation errorが発生します。

data = ParsonSchema().load({"name": "Suzuki"})

# marshmallow.exceptions.ValidationError: {'age': ['Missing data for required field.']}

 

このように、
required=Trueをつけることで対象項目を必須項目としてschema定義することができます。

 

marshmallowのその他のオプション

marshmallowのその他のオプション

marshmallowには他にもいくつかのオプションがあります。

  • allow_none
  • missing
  • validate


ざっと解説しましょう。

allow_noneオプション

null値を許可するかどうかのオプションです。

 

Trueの場合、nullを許可し、Falseの場合、nullが入ってきたらvalidation errorが発生させます。
デフォルトではFalseになっています。

 

なお、allow_noneオプションの詳しい解説は
marshmallowのallow_noneオプションの使い方」の記事に書いています。

missingオプション

対象項目がなかった場合に、どのような値で埋めるかを指定するオプションです。

 

‘missing=0’ や ‘missing=None’ というように値を渡して使います。

 

なお、 ‘missing=True’ のとき、 ‘required=False’ でないと動かしたときerrorが発生します。
(当然といえば当然ですね)

 

なお、missingオプションの詳しい解説は
marshmallowのmissingオプションの使い方」の記事に書いています。

validateオプション

データを読み込む際のValidationをつけるオプションです。
Validationの条件を指定します。

 

例えば、以下のように書くことで、dayは1~31の範囲の値のみ受け付けるようにしています。

day = fields.Int(validate=Range(min=1, max=31))

 

なお、validateオプションの詳しい解説は
marshmallowのvalidateオプションの使い方」の記事に書いています。

 

marshmallow(Pythonライブラリ)とは?

marshmallow(Pythonライブラリ)とは?

そもそもmarshmallowとは何なのでしょうか?

 

marshmallowはschema定義用のPythonライブラリです。

 

marshmallowを使うことで、
schemaを定義してPython型以外のデータ(例えば、JSONなど)を読み込むことができます。

 

marshmallowを使えば、
JSONの階層的なデータ構造をそのままPythonへ読み込むことができます。

 

marshmallowの具体的な使い方については
marshmallowの使い方【Pythonライブラリ】」の記事で解説しています。

 

marshmallowやPythonについてスキルをつけるなら

marshmallowやPythonについてスキルをつけるなら

marshmallowを使ったPythonでJSONデータ読み込む方法について解説しました。

 

Pythonをマスターすると様々なことがプログラムでできるようになります。

Pythonを深く網羅的に学ぶためには以下の書籍がオススメです。

 

この書籍はPythonについてかなり深く、そして丁寧に書かれています。

Python の基本文法だけでなく、

いかにして Python の持つ力を最大限引き出せるかという視点で書かれています。

 

Python 初心者はもちろん、すでに Python を使える方にもオススメの一冊です。

エンジニアとしての自身の価値をチェックする(完全無料)

エンジニアとして、

自分の価値がどれくらいのものかご存知でしょうか?

 

エンジニアとしてIT業界に身を置いていると

今の会社でずっと働くのか、フリーランスとして独立するのか …

と様々な選択肢があります。

 

どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも

自身の価値を知っておくことはとても重要です。

 

TechClips ME では、

職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。

▼▼▼▼▼

▲▲▲▲▲

しかもTechClips MEでは想定年収を企業から提示してくれるので、

自身の価値を数字で分かりやすくたしかめることができます。

 

登録はもちろん完全無料なので、一度登録してみると良いかもしれません。

 

コメント

タイトルとURLをコピーしました