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

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

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

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

marshmallowでschemaを定義するときに、
allow_noneオプションをつけることでnull値を許容することができるぞ。

 

✔️ 本記事のテーマ

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

 

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

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

 

この記事を読むことで
「allow_noneオプションの使い方 や null値許可の定義」
について理解できます。

 

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

 

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

 

本記事では、そんなmarshmallowのnull値の許可について解説していきます。

 

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

 

marshmallowのallow_noneオプションとは?

marshmallowのallow_noneオプションとは?

一言で説明すると、null値許可の定義です。

 

schemaで対象項目にallow_noneオプションをつけることで
データを読み込む際に対象項目の値がnullだった場合の動作を定義できます。

 

marshmallowのschema定義はデフォルトでは値としてnullが入ってきた場合、
validation errorを発生させます。

 

allow_noneオプションをつけることで、
このvalidation errorを回避して、null値が入ったデータを読み込むことができます。

 

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

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

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

allow_none=True

とすることで対象項目のnull値を許容することができます。

 

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

 

ただ、このままでは例えばage=nullの場合に、Validationerrorが発生します。

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

# marshmallow.exceptions.ValidationError: {'age': ['Field may not be null.']}

 

そこで、schema定義の全ての項目に、allow_noneオプションによるnull値許可をつけてみます。

from marshmallow import Schema, fields


class ParsonSchema(Schema):

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

 

こうすることでnull値を与えても、
errorが発生することなく、データの読み込みを行うことができます。

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

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

 

このように、allow_none=Trueをつけることで、対象項目のnull値を許可することができます。

 

marshmallowのその他のオプション

marshmallowのその他のオプション

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

  • required
  • missing
  • validate


ざっと解説しましょう。

requiredオプション

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

 

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

 

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

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