[PYTHON] Remarques sur l'utilisation de la guimauve dans la bibliothèque de schémas

marshmallow ?

Cette bibliothèque. bibliothèque de schémas.

Lire le démarrage rapide

Lire le démarrage rapide

C'est écrit de manière assez détaillée, il est donc bon de le lire.

L'utilisation approximative est la suivante (le démarrage rapide est plus détaillé).

définition de schéma

from marshmallow import Schema, fields

#définition de schéma
class Perseon(Schema):
    name = fields.String()
    age = fields.Integer()

Utilisation du schéma (chargement / vidage)

# load(json.Image semblable à une charge)
data, errs = Person().load({"name": "foo", "age": "10"})

# dump
dumped, errs = Person().dump(data)

La valeur retournée par load (), dump () est un tuple nommé avec data, errors comme valeur. Vous pouvez donc également écrire Person.dump (data) .data etc.

strict mode

Par défaut, aucune erreur ne se produit même si la validation est interceptée. Activez le mode strict pour faire une erreur.

Person(strict=True).load({})

Histoire après lecture

Notez les points suivants

--Par défaut, le mode strict est faux

le mode strict est faux par défaut

Personnellement, true est bon pour la valeur par défaut, donc fondamentalement, j'ai mis strict = True dans Meta.

class Person(Schema):
    name = fields.String()

    class Meta:
        strict = True

Person().load({})  # marshmallow.ValidationError

Lorsque vous voulez supprimer le strict, vous passez explicitement strict = False.

data, err = Person(strict=False).load({})

Les valeurs qui n'existent pas dans la définition de schéma sont automatiquement supprimées

Les valeurs qui n'existent pas dans la définition de schéma sont automatiquement supprimées. Notez que vous devez définir fermement les champs nécessaires.

class Person(Schema):
    name = fields.String()

data, _ = Person().load({"name": "foo", "age": 20})
print(data)  # => {"name": "foo"}

required = True ne peut pas être requis à moins d'être explicitement ajouté

Ce nom ne peut pas être requis. Vous devez ajouter explicitement requis.

class Person(Schema):
    name = fields.String()

comme ça.

class Person(Schema):
    name = fields.String(required=True)

Cela s'applique également lors de la spécification de champs dans Meta. Vous ne pouvez donc pas définir les champs obligatoires dans Meta.fields

class Person(Schema):
    class Meta:
        filds = ("name",)

dump ʻupdate_fields = True` par défaut

Ceci est une petite histoire. Soyez prudent si vous souhaitez évaluer les performances. Par défaut, marshmallow a update_fields défini sur true. C'est une fonction qui utilise la valeur des données transmises pour modifier la gestion des types définis automatiquement tels que les champs d'une manière agréable. Par exemple, après avoir passé un nombre, c'est comme fields.Field devient fields.Integer.

C'est pratique, cependant. C'est un processus qui prend beaucoup de charge, donc si vous êtes préoccupé par la vitesse, vous devriez le désactiver. Il semble qu'il ne puisse pas être spécifié avec meta.

schema.dump(data, update_fields=False)

Si vous rencontrez un problème, lisez le code source pour le résoudre.

Recommended Posts

Remarques sur l'utilisation de la guimauve dans la bibliothèque de schémas
Comment utiliser la bibliothèque C en Python
Remarques sur l'utilisation de pywinauto
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment utiliser la bibliothèque de dessins graphiques Bokeh
Comment utiliser le décorateur
Remarques sur les transactions dans la bibliothèque client Java dans la banque de données
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
[Python] Comment utiliser la bibliothèque de création de graphes Altair
Comment utiliser la clause exist dans l'ensemble de requêtes Django
Autoencoder dans Chainer (Remarques sur l'utilisation de + trainer)
Comment utiliser le modèle appris dans Lobe en Python
Comment utiliser la bibliothèque de solveurs "kociemba" de Rubik Cube
Comment utiliser la fonction zip
Comment utiliser le module optparse
Comment déboguer une bibliothèque Python standard dans Visual Studio
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Comment utiliser les classes dans Theano
Comment utiliser Dataiku sous Windows
Comment utiliser la méthode __call__ dans la classe Python
Comment utiliser VS Code dans un environnement Venv avec Windows
Comment utiliser l'homebrew dans Debian
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Remarques sur l'utilisation de StatsModels qui peuvent utiliser la régression linéaire et GLM en python
Comment utiliser le module ConfigParser
Remarques sur la rédaction de requirements.txt
Pour utiliser python, mettez pyenv sur macOS avec PyCall
Comment utiliser l'astérisque (*) en Python. C'est peut-être tout? ..
[Note du débutant] Comment spécifier le chemin de lecture de la bibliothèque en Python
Comment utiliser la fonction de rendu définie dans .mako (.html) directement dans mako
Comment utiliser les colonnes calculées dans CASTable
[Introduction à Python] Comment utiliser la classe en Python?
Comment utiliser le pipeline Spark ML
Comment utiliser mecab, neologd-ipadic sur colab
Comment utiliser Google Test en langage C
[Linux] Comment utiliser la commande echo
Comment utiliser l'Assistant Google sur Windows 10
Mémorandum sur l'utilisation du python gremlin
Comment utiliser l'interpréteur d'Anaconda avec PyCharm
Comment utiliser __slots__ dans la classe Python
Comment utiliser le débogueur IPython (ipdb)
Comment utiliser les expressions régulières en Python
Comment utiliser Map dans ViewPager d'Android
Comment utiliser is et == en Python
Comment utiliser MkDocs pour la première fois
Comment utiliser Python Kivy ④ ~ Exécution sur Android ~
Résumé de l'utilisation de MNIST avec Python
Comment utiliser l'API Google Cloud Translation
Comment utiliser l'API du guide des programmes NHK
[Algorithm x Python] Comment utiliser la liste
Comment obtenir les fichiers dans le dossier [Python]
Comment utiliser tkinter avec python dans pyenv
Comment utiliser la bibliothèque de traitement d'image basée sur PyTorch "Kornia"
Utilisez l'application LibreOffice en Python (3) Ajouter une bibliothèque
Connectez-vous avec json en utilisant pygogo.
Comment passer le chemin vers la bibliothèque construite avec pyenv et virtualenv avec PyCharm