0
0

Cerberusでヌルチェックをする方法

Last updated at Posted at 2023-12-27

やりたいこと

データの「ヌルチェック」という表現について、場合によってちょっと曖昧になってしまうかなと思います。
通常は「null(None)ではないこと」を指しているかと思いますが、いままでの職場では「ブランク('')ではないこと」や「項目自体が存在すること」などを言っている人もいるので、、、

今回は「null(None)ではないこと」、「ブランク('')ではないこと」、「項目自体が存在すること」、それぞれCerberusでのチェック方法を調べてみました。

前提

・Pythonインストール済み
・pipenvインストール済み
(今回は便宜上pipenvでやるのですが、ローカルでcerberusなど諸々ライブラリを入れてテストをやっても大丈夫です)

ソースの中身

さっそく調べた結果をソース化しました~

cerberus_validator.py
from cerberus import Validator


SCHEMA = {
    'name': {
        'type': 'string',
        'required': True, # nameという項目自体が存在すること 
        'empty': False, # name項目の中身がブランクではないこと
        'nullable': False # name項目の中身がNone(ヌル)ではないこと
    },
}

def validate_info(info):
    validator = Validator(allow_unknown=True)
    if not validator.validate(info, SCHEMA):
        print(validator.errors)
        return False
    return True

# 正常時
info = {'name': 'satoh'}
print(validate_info(info))

# nameという項目自体が存在していない
info = {}
print(validate_info(info))

# name項目の中身がブランクである
info = {'name': ''}
print(validate_info(info))

# name項目の中身がNone(ヌル)である
info = {'name': None}
print(validate_info(info))

ソースを実行すると、以下のような結果がprintされました!
Cerberusはちゃんとエラー箇所や原因を記録できて便利だねと感じました!

True
{'name': ['required field']}
False
{'name': ['empty values not allowed']}
False
{'name': ['null value not allowed']}
False
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0