[PYTHON] Hinweise zur Verwendung von Marshmallow in der Schemabibliothek

marshmallow ?

Diese Bibliothek. Schemabibliothek.

Lesen Sie den Schnellstart

Lesen Sie den Schnellstart

Es ist sehr detailliert geschrieben, daher ist es gut, es zu lesen.

Die grobe Verwendung ist wie folgt (Schnellstart ist detaillierter).

Schemadefinition

from marshmallow import Schema, fields

#Schemadefinition
class Perseon(Schema):
    name = fields.String()
    age = fields.Integer()

Verwendung des Schemas (Laden / Dump)

# load(json.Ladeähnliches Bild)
data, errs = Person().load({"name": "foo", "age": "10"})

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

Der von load (), dump () zurückgegebene Wert ist ein benanntes Tupel mit data, error als Wert. Sie können also auch "Person.dump (data) .data" usw. schreiben.

strict mode

Standardmäßig tritt kein Fehler auf, selbst wenn die Validierung abgefangen wird. Aktivieren Sie den strengen Modus, um einen Fehler zu machen.

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

Geschichte nach dem Lesen

Beachten Sie die folgenden Punkte

Der strikte Modus ist standardmäßig falsch

Persönlich ist true für die Standardeinstellung gut, daher setze ich in Meta im Grunde genommen strict = True.

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

    class Meta:
        strict = True

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

Wenn Sie den Strict entfernen möchten, übergeben Sie explizit strict = False.

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

Werte, die in der Schemadefinition nicht vorhanden sind, werden automatisch gelöscht

Werte, die in der Schemadefinition nicht vorhanden sind, werden automatisch gelöscht. Beachten Sie, dass Sie die erforderlichen Felder fest definieren müssen.

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

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

required = True kann nur benötigt werden, wenn dies ausdrücklich hinzugefügt wurde

Dieser Name kann nicht benötigt werden. Sie müssen explizit erforderlich hinzufügen.

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

so was.

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

Dies gilt auch für die Angabe von Feldern in Meta. Daher können Sie in Meta.fields keine erforderlichen Felder definieren

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

Standardmäßig dump update_fields = True

Dies ist eine kleine Geschichte. Seien Sie vorsichtig, wenn Sie die Leistung messen möchten. Standardmäßig hat Marshmallow update_fields auf true gesetzt. Dies ist eine Funktion, die den Wert der übergebenen Daten verwendet, um die Behandlung automatisch definierter Typen wie Felder auf nette Weise zu ändern. Nach dem Übergeben einer Zahl ist dies beispielsweise wie bei Feldern. Feld wird zu Feldern. Ganzzahl.

Es ist jedoch praktisch. Es ist ein Prozess, der viel Last erfordert. Wenn Sie also über die Geschwindigkeit besorgt sind, sollten Sie ihn ausschalten. Es scheint, dass es nicht mit Meta angegeben werden kann.

schema.dump(data, update_fields=False)

Wenn Sie ein Problem haben, lesen Sie den Quellcode, um es zu lösen.

Recommended Posts

Hinweise zur Verwendung von Marshmallow in der Schemabibliothek
Verwendung der C-Bibliothek in Python
Hinweise zur Verwendung von Pywinauto
[Hyperledger Iroha] Hinweise zur Verwendung des Python SDK
Verwendung der Python-Bildbibliothek in der Python3-Serie
Verwendung der Grafikzeichnungsbibliothek Bokeh
Wie benutzt man den Dekorateur?
Hinweise zu Transaktionen in der Java-Clientbibliothek im Datenspeicher
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Verwendung der Exist-Klausel in Django Queryset
Autoencoder im Chainer (Hinweise zur Verwendung von + Trainer)
Verwendung des in Lobe in Python erlernten Modells
Verwendung der Solver-Bibliothek "kociemba" von Rubik Cube
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
So debuggen Sie eine Standard-Python-Bibliothek in Visual Studio
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
Verwendung von Klassen in Theano
Verwendung von Dataiku unter Windows
Verwendung der Methode __call__ in der Python-Klasse
Verwendung von VS-Code in einer venv-Umgebung mit Windows
Wie benutzt man Homebrew in Debian?
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Hinweise zur Verwendung von StatsModels, die lineare Regression und GLM in Python verwenden können
Verwendung des ConfigParser-Moduls
Hinweise zum Schreiben von require.txt
So verwenden Sie Python in Pyenv unter MacOS mit PyCall
Verwendung von Sternchen (*) in Python. Vielleicht ist das alles? ..
[Anfängernotiz] So legen Sie den Lesepfad der Bibliothek in Python fest
Verwendung der in .mako (.html) direkt in mako definierten Renderfunktion
Verwendung berechneter Spalten in CASTable
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwendung der Spark ML-Pipeline
Wie man Mecab, neologd-ipadic auf Colab verwendet
Verwendung von Google Test in C-Sprache
[Linux] Verwendung des Befehls echo
So verwenden Sie Google Assistant unter Windows 10
Memorandum über die Verwendung von Gremlin Python
Verwendung von Anacondas Interpreter mit PyCharm
Verwendung von __slots__ in der Python-Klasse
Verwendung des IPython-Debuggers (ipdb)
Verwendung regulärer Ausdrücke in Python
So verwenden Sie Map in ViewPager von Android
Verwendung ist und == in Python
So verwenden Sie MkDocs zum ersten Mal
Verwendung von Python Kivy ④ ~ Ausführung unter Android ~
Zusammenfassung der Verwendung von MNIST mit Python
Verwendung der Google Cloud Translation API
Verwendung der NHK-Programmführer-API
[Algorithmus x Python] Verwendung der Liste
So erhalten Sie die Dateien im Ordner [Python]
Wie man tkinter mit Python in Pyenv benutzt
Verwendung der PyTorch-basierten Bildverarbeitungsbibliothek "Kornia"
Verwenden Sie die LibreOffice-App in Python (3) Bibliothek hinzufügen
Loggen Sie sich mit json mit pygogo ein.
So übergeben Sie den Pfad zu der mit pyenv und virtualenv mit PyCharm erstellten Bibliothek