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

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

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

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

missingオプションをつけることで、
対象項目が欠けている場合のデフォルト値を設定できる。

 

✔️ 本記事のテーマ

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

 

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

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

 

この記事を読むことで
「missingオプションの使い方 や schemaのデフォルト値の定義」
について理解できます。

 

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

 

marshmallowライブラリでは、
各schemaに対して、その項目のデフォルト値を定義することができます。

 

本記事では、そんなmarshmallowのデフォルト値定義について解説していきます。

 

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

 

marshmallowのmissingオプションとは?

marshmallowのmissingオプションとは?

一言で説明すると、デフォルト値の定義です。

 

schemaで対象項目にmissingオプションをつけることで
その項目が欠けていた場合のデフォルト値を定義することができます。

 

marshmallowのschema定義はデフォルトでは項目が欠けていた場合、
その項目はなかったものとして処理されます。

 

missingオプションをつけることで、
項目がないデータを読み込んだ場合に補完するための値(何で補完するか)
を定義することができます。

 

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

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

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

missing=デフォルト値

とすることで対象項目のデフォルト値を定義することができます。

 

試しに、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'}

 

このように、missingオプションをつけないと項目がない場合、
その項目はデータとして取り込まれません。(当然ですね)

 

そこで、’age’のschema定義に、missingオプションによるデフォルト値を設定してみます。
今回は‘age’の項目がなかった場合は’1’が設定されるように定義しましょう。

from marshmallow import Schema, fields


class ParsonSchema(Schema):

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

 

こうすることで、’age’の項目がないデータを読み込んだ場合、
デフォルト値の1がセットされるようになります。

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

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

 

このように、
missing=デフォルト値をつけることで、対象項目のデフォルト値を定義することができます。

 

marshmallowのその他のオプション

marshmallowのその他のオプション

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

  • required
  • allow_none
  • validate


ざっと解説しましょう。

requiredオプション

対象項目を必須とするかどうかのオプションです。

 

Trueの場合、対象項目は必須となり、対象項目が存在しないデータを読み込むとerrorが発生します。
Falseの場合、対象項目が欠けていてもerrorになりません。
デフォルトではFalseになっています。

 

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

allow_noneオプション

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

 

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

 

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

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をコピーしました