Paket google.appengine.ext.ndb
Übersicht
NDB – Eine neue Datenspeicher-API für die Python-Laufzeit von Google App Engine.
Untergeordnete Module |
|
---|---|
google.appengine.ext.ndb.blobstore |
NDB-Schnittstelle für Blobstore. |
google.appengine.ext.ndb.context |
Kontextklasse. |
google.appengine.ext.ndb.django_middleware |
Django-Middleware für NDB. |
google.appengine.ext.ndb.eventloop |
Eine Ereignisschleife. |
google.appengine.ext.ndb.google_imports |
Entscheidet dynamisch, von wo Google App Engine-Module zu importieren sind. |
google.appengine.ext.ndb.key |
Die Schlüsselklasse und zugehörigen Dienstprogramme. |
google.appengine.ext.ndb.metadata |
Modelle und Hilfsfunktionen für den Zugriff auf die Datenspeicher-Metadaten der Anwendung. |
google.appengine.ext.ndb.model |
Modell- und Property-Klassen sowie zugehörige Elemente. |
google.appengine.ext.ndb.msgprop |
MessageProperty – Eine Property zum Speichern von ProtoRPC-Nachrichtenobjekten. |
google.appengine.ext.ndb.polymodel |
Polymorphe Modelle und Abfragen. |
google.appengine.ext.ndb.query |
Übergeordneter Abfrage-Wrapper. |
google.appengine.ext.ndb.stats |
Modelle, die beim Zugriff auf anwendungsspezifische Nutzungsstatistiken im Datenspeicher verwendet werden. |
google.appengine.ext.ndb.tasklets |
Ein Tasklet-Decorator. |
google.appengine.ext.ndb.utils |
Low-Level-Dienstprogramme, die intern von NDB verwendet werden. |
Inhalt
- google.appengine.ext.ndb.Return
-
Alias von "StopIteration"
- google.appengine.ext.ndb.tasklet(func)Quelle
- google.appengine.ext.ndb.synctasklet(func)Quelle
-
Decorator, um eine Funktion bei deren Aufruf als Tasklet auszuführen.
Hiermit können Sie eine Anfrage-Handler-Funktion zusammenfassen, die von manchen Webanwendungs-Frameworks aufgerufen wird (z. B. einer Django-Ansichtsfunktion oder einer webapp.RequestHandler.get-Methode).
- google.appengine.ext.ndb.toplevel(func)Quelle
-
Ein Synchronisierungs-Tasklet, das einen neuen Standardkontext festlegt.
Verwenden Sie diese Option für Ansichtsfunktionen der obersten Ebene wie webapp.RequestHandler.get() oder Django-Ansichtsfunktionen.
- google.appengine.ext.ndb.sleep(dt)Quelle
Öffentliche Funktion für einen Ruhezustand über einen gewissen Zeitraum.
Beispielyield tasklets.sleep(0.5) # Halbe Sekunde Ruhezustand.
- google.appengine.ext.ndb.add_flow_exception(exc)Quelle
-
Fügt eine Ausnahme hinzu, die nicht protokolliert werden soll.
Das Argument muss eine abgeleitete Klasse von "Exception" sein.
- google.appengine.ext.ndb.get_return_value(err)Quelle
- google.appengine.ext.ndb.get_context()Quelle
- google.appengine.ext.ndb.set_context(new_context)Quelle
- google.appengine.ext.ndb.make_default_context()Quelle
- google.appengine.ext.ndb.make_context(*args, **kwds)Quelle
- Klasse google.appengine.ext.ndb.Future(info=None)Quelle
-
Basiert auf: object
Ein Future hat null oder mehr Callbacks.
Die Callbacks werden aufgerufen, wenn das Ergebnis bereitsteht.
HINWEIS: Die Idee hierfür geht zum Teil auf die in PEP 3148 definierte Future-Schnittstelle zurück, ist mit dieser aber nicht deckungsgleich. Außerdem ist dieses Future an die App Engine-spezifischen Klassen "UserRPC" und "MultiRpc" angelehnt und soll damit auch möglichst kompatibel sein.
- WIRD ABGESCHLOSSEN = 2
- INAKTIV = 0
- WIRD AUSGEFÜHRT = 1
- add_callback(callback, *args, **kwds)Quelle
- add_immediate_callback(callback, *args, **kwds)Quelle
- check_success()Quelle
- done()Quelle
- dump()Quelle
- dump_stack()Quelle
- get_exception()Quelle
- get_result()Quelle
- get_traceback()Quelle
- set_exception(exc, tb=None)Quelle
- set_result(result)Quelle
- state
- wait()Quelle
- Klassenmethode wait_all(futures)Quelle
- Klassenmethode wait_any(futures)Quelle
- Klasse google.appengine.ext.ndb.MultiFuture(info=None)Quelle
-
Basis: google.appengine.ext.ndb.tasklets.Future
Ein Future, das von mehreren anderen Futures abhängt.
Dies wird intern von "v1, v2, … = yield f1, f2, …" verwendet. Die Semantik (z. B. Fehlerbehandlung) ist durch diesen Anwendungsfall eingeschränkt.
Das Protokoll sieht aus Sicht des Aufrufers so aus:
mf = MultiFuture() mf.add_dependent(<some other Future>) -OR- mf.putq(<some value>) mf.add_dependent(<some other Future>) -OR- mf.putq(<some value>) . . (More mf.add_dependent() and/or mf.putq() calls) . mf.complete() # No more dependents will be added. . . (Time passes) . results = mf.get_result()
"results" ist jetzt eine Liste von Ergebnissen aller abhängigen Futures in der Reihenfolge, in der sie hinzugefügt wurden.
Es ist zulässig, dieselben abhängigen Futures mehrfach hinzuzufügen.
Callbacks können an jedem Punkt hinzugefügt werden.
Aus Sicht eines abhängigen Futures muss nichts ausgeführt werden: Ein Callback wird jedem abhängigen Future automatisch hinzugefügt. Dieser Callback signalisiert "MultiFuture", dass das jeweilige Future abgeschlossen ist.
Fehlerbehandlung: Wenn ein abhängiges Future einen Fehler auslöst, wird es an "mf" übergeben. Wenn Sie einen frühen Fehler erzwingen möchten, können Sie mf.set_Exception() anstelle von mf.complete() aufrufen. Danach können Sie mf.add_dependent() oder mf.putq() nicht mehr aufrufen.
- add_dependent(fut)Quelle
- complete()Quelle
- putq(value)Quelle
- set_exception(exc, tb=None)Quelle
- Klasse google.appengine.ext.ndb.QueueFuture(info=None)Quelle
-
Basis: google.appengine.ext.ndb.tasklets.Future
Eine Warteschlange, die demselben Protokoll wie "MultiFuture" folgt.
Statt jedoch Ergebnisse als Liste zurückzugeben, können Sie Ergebnisse mit „getq()“ nacheinander abrufen, sobald sie bereit sind. Das Future selbst wird mit dem Ergebnis „None“ abgeschlossen, wenn das letzte Ergebnis bereit ist (unabhängig davon, ob es abgerufen wurde).
Die Methode "getq()" gibt ein Future zurück, das den Ablauf blockiert, bis das nächste Ergebnis bereitsteht. Anschließend gibt das Future dieses Ergebnis zurück. Jeder Aufruf von "getq()" ruft ein eindeutiges Ergebnis ab. Zusätzliche Aufrufe von "getq()" nach der Rückgabe des letzten Ergebnisses geben "EOFError" als Ausnahme ihres Futures zurück. Das heißt, "q.getq()" gibt wie immer ein Future zurück, aber das Erzeugen dieses Futures löst "EOFError" aus.
HINWEIS: Werte können auch direkt über ".putq(value)" gesendet werden. Allerdings gibt es keine Ablaufsteuerung: Wenn der Hersteller schneller als der Nutzer ist, wächst die Warteschlange unbegrenzt.
- add_dependent(fut)Quelle
- complete()Quelle
- getq()Quelle
- putq(value)Quelle
- set_exception(exc, tb=None)Quelle
- Klasse google.appengine.ext.ndb.SerialQueueFuture(info=None)Quelle
-
Basis: google.appengine.ext.ndb.tasklets.Future
Wie "QueueFuture", behält aber die Reihenfolge der Einfügung bei.
Diese Klasse wird von Abfragevorgängen verwendet.
Invarianten:
-
Entweder "_queue" oder "_waiting" ist leer.
-
Die Futures in "_waiting" sind immer ausstehend.
Die Futures in "_queue" können ausstehend oder abgeschlossen sein.
Im Beispiel unten wird "add_dependent()" genau wie "putq()" behandelt.
Wenn "putq()" vor "getq()" kommt, sieht die Situation so aus:
putq() v
_queue: [f1, f2, …]; _waiting: [] ^ getq()
Hier fügt "putq()" ein Future rechts von "_queue" an und "getq()" entfernt ein Future von links.
Wenn "getq()" vor "putq()" kommt, sieht es so aus:
putq() v
- _queue: []; _waiting: [f1, f2, …]
-
^ getq()
Hier entfernt "putq()" ein Future links von "_waiting" und "getq()" fügt ein Future rechts an.
Wenn beide leer sind, fügt "putq()" ein Future rechts von "_queue" an, während "getq()" ein Future rechts von "_waiting" anfügt.
Das Flag "_full" bedeutet, dass "putq()" nicht mehr aufgerufen wird. Das Flag wird durch Aufruf von "complete()" oder "set_exception()" gesetzt.
Der Aufruf von "complete()" signalisiert, dass "putq()" nicht mehr aufgerufen wird. Wenn "getq()" danach kommt, konsumieren nachfolgende Aufrufe von "getq()" die "_queue", bis sie leer ist. Danach wird ein Future zurückgegeben, das "EOFError" übergibt. Dabei löst "getq()" selbst niemals "EOFError" aus. Wenn "getq()" vor dem Aufruf von "complete()" kommt, wird an alle Futures in "_waiting" die Ausnahme "EOFError" übergeben und "_waiting" damit konsumiert.
Wenn nicht "complete()" sondern "set_exception()" aufgerufen wird, werden die dort festgelegte Ausnahme und das dort festgelegte Traceback anstelle von "EOFError" verwendet.
- add_dependent(fut)Quelle
- complete()Quelle
- getq()Quelle
- putq(value)Quelle
- set_exception(exc, tb=None)Quelle
-
- Klasse google.appengine.ext.ndb.ReducingFuture(reducer, info=None, batch_size=20)Quelle
-
Basis: google.appengine.ext.ndb.tasklets.Future
Eine Warteschlange, die demselben Protokoll wie "MultiFuture" folgt.
Allerdings ist das Ergebnis keine Liste von Ergebnissen abhängiger Futures, sondern wird durch Aufruf eines Reducer-Tasklets berechnet. Das Reducer-Tasklet nimmt eine Liste von Werten an und gibt einen einzigen Wert zurück. Es kann mehrfach für Unterlisten von Werten aufgerufen werden und sollte sich wie z. B. "sum()" verhalten.
HINWEIS: Die Reducer-Eingabewerte können im Vergleich zu der Reihenfolge, in der sie der Warteschlange hinzugefügt wurden, neu angeordnet werden.
- add_dependent(fut)Quelle
- complete()Quelle
- putq(value)Quelle
- set_exception(exc, tb=None)Quelle
- Klasse google.appengine.ext.ndb.KeyQuelle
-
Basiert auf: object
Ein unveränderlicher Datenspeicherschlüssel.
Zur flexiblen und praktischen Anwendung werden mehrere Konstruktorsignaturen unterstützt.
Die primäre Vorgehensweise zum Erstellen eines Schlüssels besteht in der Verwendung von Positionsargumenten: – Key(kind1, id1, kind2, id2, …)
Dies ist eine Kurzschreibweise für eine der beiden folgenden längeren Schreibweisen: – Key(pairs=[(kind1, id1), (kind2, id2), …]) – Key(flat=[kind1, id1, kind2, id2, …])
Jede der oben genannten Konstruktorformen kann mit "parent=<key>" zusätzlich einen weiteren Schlüssel übergeben. Die (kind, id)-Paare des übergeordneten Schlüssels werden vor den explizit übergebenen (kind, id)-Paaren eingefügt.
Sie können auch einen Schlüssel aus einem Codierungsstring vom Typ "url-safe" erstellen: – Key(urlsafe=<string>)
Fortgeschrittene können sich folgender Konstruktoren bedienen: – Key(reference=<reference>) – Übergibt ein untergeordnetes Referenzobjekt – Key(serialized=<string>) – Übergibt ein serialisiertes untergeordnetes Referenzobjekt – Key(<dict>) – Für das Unpickling, mit "Key(**<dict>)" identisch
Der String "url-safe" ist im Prinzip eine mit base64 websicher codierte, serialisierte Referenz, allerdings sollte der String eher als ein intransparenter, eindeutiger String betrachtet werden.
Weitere Schlüsselwortargumente für den Konstruktor: – app=<string> – Gibt die Anwendungs-ID an – namespace=<string> – Gibt den Namespace an
Wenn eine Referenz (mit "reference", "serialized" oder "urlsafe") übergeben wird, müssen die Argument- und Namespace-Schlüsselwörter mit denjenigen übereinstimmen, die bereits in der Referenz vorhanden sind (nach einer eventuellen Decodierung). Das übergeordnete Schlüsselwort kann in keiner Weise mit einer Referenz kombiniert werden.
Schlüssel sind unveränderlich. Dies bedeutet, dass ein Schlüsselobjekt nicht mehr geändert werden kann, nachdem es erstellt wurde. Dies wird durch die Implementierung sowie Python durchgesetzt.
Für den Zugriff auf den Inhalt eines Schlüssels werden folgende Methoden und Vorgänge unterstützt:
-
repr(key), str(key) – Gibt eine Stringdarstellung zurück, die der kürzesten Konstruktorschreibweise ähnelt, allerdings ohne Anwendung und Namespace, sofern diese nicht vom Standardwert abweichen.
-
key1 == key2, key1 != key2 – Vergleich der Gleichheit zwischen Schlüsseln.
-
hash(key): Hash-Wert, der zum Speichern von Schlüsseln in einem Wörterbuch ausreicht
-
key.pairs() – Ein Tupel von (kind, id)-Paaren.
-
key.flat() – Ein Tupel von vereinfachten Art- und ID-Werten, also (kind1, id1, kind2, id2, …).
-
key.app() – Die Anwendungs-ID.
-
key.id() – Die String- oder Ganzzahl-ID im letzten (kind, id)-Paar oder "None", falls der Schlüssel unvollständig ist.
-
key.string_id() – Die String-ID im letzten (kind, id)-Paar oder "None", falls der Schlüssel eine Ganzzahl-ID hat oder unvollständig ist.
-
key.integer_id() – Die Ganzzahl-ID im letzten (kind, id)-Paar oder "None", falls der Schlüssel eine String-ID hat oder unvollständig ist.
-
key.namespace() – Der Namespace.
-
key.kind() – Eine Kurzschreibweise für "key.pairs()[-1][0]".
-
key.parent() – Ein Schlüssel, der aus allen (kind, id)-Paaren bis auf das letzte erstellt wurde.
-
key.urlsafe() – Eine mit base64 websicher codierte, serialisierte Referenz.
-
key.serialized(): Serialisierte Referenz
-
key.reference() – Ein Referenzobjekt. Der Aufrufer sichert zu, das Objekt nicht zu verändern.
Schlüssel unterstützen auch die Interaktion mit dem Datenspeicher. Diese Methoden sind die einzigen, die an einer beliebigen Art von E-/A-Aktivität beteiligt sind. Informationen zu Future-Objekten finden Sie im Dokument zu "ndb/tasklets.py".
-
key.get() – Gibt die Entität für den Schlüssel zurück.
-
key.get_async() – Gibt ein Future zurück, dessen Endergebnis die Entität für den Schlüssel ist.
-
key.delete() – Löscht die Entität für den Schlüssel.
-
key.delete_async(): Löscht die Entität für den Schlüssel asynchron
Für Schlüssel kann ein Pickling ausgeführt werden.
Das Erstellen von abgeleiteten Klassen für Schlüssel sollte vermieden werden, da dies schwer zu bewerkstelligen ist.
- app()Quelle
-
Gibt die Anwendungs-ID zurück
- delete(**ctx_options)Quelle
-
Löscht die Entität für diesen Schlüssel synchron
Wenn eine solche Entität nicht existiert, ist dies ein Leerbefehl.
- delete_async(**ctx_options)Quelle
-
Plant das Löschen der Entität für diesen Schlüssel.
Dies gibt ein Future zurück, dessen Ergebnis zur Verfügung steht, sobald der Löschvorgang abgeschlossen ist. Wenn eine solche Entität nicht existiert, wird dennoch ein Future zurückgegeben. In allen Fällen ist das Ergebnis des Futures "None". Es kann also nicht festgestellt werden, ob die Entität existiert hat oder nicht.
- flat()Quelle
-
Gibt ein Tupel alternierender Typ- und ID-Werte zurück
- Klassenmethode from_old_key(old_key)Quelle
- get(**ctx_options)Quelle
-
Ruft die Entität für diesen Schlüssel synchron ab
Gibt "None" zurück, wenn eine solche Entität nicht existiert
- get_async(**ctx_options)Quelle
-
Gibt ein Future zurück, dessen Ergebnis die Entität für diesen Schlüssel ist.
Wenn eine solche Entität nicht existiert, wird dennoch ein Future zurückgegeben, dessen endgültiges Rückgabeergebnis "None" ist.
- id()Quelle
Gibt die String- oder Ganzzahl-ID im letzten (kind, id)-Paar zurück, sofern vorhanden
Gibt Folgendes zurück:Eine String- oder Ganzzahl-ID oder "None", wenn der Schlüssel unvollständig ist
- integer_id()Quelle
Gibt die Ganzzahl-ID im letzten (kind, id)-Paar zurück, sofern vorhanden
Gibt Folgendes zurück:Eine Ganzzahl-ID oder "None", wenn der Schlüssel eine String-ID hat oder unvollständig ist
- kind()Quelle
-
Gibt den Typ der referenzierten Entität zurück.
Dies ist der Typ aus dem letzten (kind, id)-Paar.
- namespace()Quelle
-
Gib den Namespace zurück
- pairs()Quelle
-
Gibt ein Tupel von (kind, id)-Paaren zurück
- parent()Quelle
-
Gibt einen Schlüssel zurück, der aus allen (kind, id)-Paaren bis auf das letzte erstellt wurde.
Wenn nur ein (kind, id)-Paar vorliegt, wird "None" zurückgegeben.
- reference()Quelle
-
Gibt das Referenzobjekt für diesen Schlüssel zurück.
Dies ist eine entity_pb.Reference-Instanz – eine Protokollpufferklasse, die von der Low-Level API für den Datenspeicher verwendet wird.
HINWEIS: Der Aufrufer sollte den Rückgabewert nicht verändern.
- root()Quelle
-
Gibt den Stammschlüssel zurück. Dies ist entweder das Element selbst oder das höchste übergeordnete Element.
- serialized()Quelle
-
Gibt ein serialisiertes Referenzobjekt für diesen Schlüssel zurück
- string_id()Quelle
Gibt die String-ID im letzten (kind, id)-Paar zurück, sofern vorhanden
Gibt Folgendes zurück:Eine String-ID oder "None", wenn der Schlüssel eine Ganzzahl-ID hat oder unvollständig ist
- to_old_key()Quelle
- urlsafe()Quelle
-
Gibt einen URL-sicheren String zurück, der die Referenz dieses Schlüssels codiert.
Dieser String ist mit anderen APIs und Sprachen sowie mit den Strings kompatibel, die zur Darstellung von Schlüsseln in GQL und in der Admin-Konsole von App Engine verwendet werden.
-
- Klasse google.appengine.ext.ndb.BlobKey(blob_key)Quelle
-
Basiert auf: object
Schlüssel zum Identifizieren eines Blobs in Blobstore.
Dieses Objekt bettet einen String ein, der von der Blobstore API intern verwendet wird, um Anwendungs-Blobs zu identifizieren. Der BlobKey entspricht dem Entitätsnamen der zugrunde liegenden BlobReference-Entität.
Diese Klasse wird in der API sowohl in "google.appengine.ext.db" als auch in "google.appengine.ext.blobstore" zur Verfügung gestellt.
- ToXml()source
- Klasse google.appengine.ext.ndb.GeoPt(lat, lon=None)Quelle
-
Basiert auf: object
Ein geografischer Punkt, der durch Gleitkommakoordinaten für Breiten- und Längengrad angegeben ist. Häufig zur Integration mit Karten-Websites wie Google Maps verwendet. Kann auch als ICBM-Koordinaten verwendet werden.
Dies ist das Element "georss:point". In der XML-Ausgabe werden die Koordinaten als die Attribute "lat" und "lon" bereitgestellt. Weitere Informationen erhalten Sie unter: http://georss.org/
Serialisiert zu ‘<lat>,<lon>’. Löst "BadValueError" aus, wenn ein ungültiger serialisierter String übergeben wurde oder wenn "lat" und "lon" keine gültigen Gleitkommazahlen in den Bereichen [-90, 90] bzw. [-180, 180] sind.
- ToXml()source
- lat = None
- lon = None
- Ausnahme google.appengine.ext.ndb.RollbackQuelle
-
Basis: google.appengine.api.datastore_errors.Error
Kann von Transaktionsfunktionen ausgelöst werden, wenn diese statt eines Commits einen Rollback ausführen möchten. Jede von einer Transaktionsfunktion ausgelöste Ausnahme führt zu einem Rollback. Dies hat rein praktische Gründe. Weitere Informationen finden Sie unter "datastore.RunInTransaction".
- Klasse google.appengine.ext.ndb.IndexQuelle
-
Basis: google.appengine.ext.ndb.model._NotEqualMixin
Unveränderliches Objekt, das einen Index darstellt.
- ancestor
-
Gibt an, ob es sich um einen Ancestor-Index handelt. Ein boolescher Wert.
- kind
-
Die zu indexierende Art in Form eines Strings.
- properties
-
Eine Liste von PropertyIndex-Objekten, die die zu indexierenden Properties enthält.
- Klasse google.appengine.ext.ndb.IndexStateQuelle
-
Basis: google.appengine.ext.ndb.model._NotEqualMixin
Unveränderliches Objekt, das einen Index und seinen Status darstellt.
- definition
-
Ein Indexobjekt, das den Index beschreibt.
- id
-
Die Index-ID in Form einer Ganzzahl.
- state
-
Der Indexstatus in Form eines Strings.
Mögliche Werte sind "error", "deleting", "serving" oder "building".
- Klasse google.appengine.ext.ndb.IndexPropertyQuelle
-
Basis: google.appengine.ext.ndb.model._NotEqualMixin
Unveränderliches Objekt, das eine einzelne Property in einem Index darstellt.
- direction
-
Die Richtung im Index für diese Property, "asc" oder "desc".
- name
-
Der Name der zu indexierenden Property in Form eines Strings.
- Klasse google.appengine.ext.ndb.ModelAdapter(default_model=None, id_resolver=None)Quelle
-
Basis: google.appengine.datastore.datastore_rpc.AbstractAdapter
Konvertierungen zwischen den vorliegenden Schlüssel- und Modellklassen und den Protokollpuffern.
Dies ist erforderlich, um ein Verbindungsobjekt zu erstellen, das wiederum zum Erstellen eines Kontextobjekts benötigt wird.
Weitere Informationen zu den Signaturen finden Sie unter der Basisklasse "docstring".
- entity_to_pb(ent)Quelle
- key_to_pb(key)source
- pb_to_entity(pb)Quelle
- pb_to_index(pb)Quelle
- pb_to_key(pb)source
- Klasse google.appengine.ext.ndb.ModelAttributeQuelle
-
Basiert auf: object
Eine Basisklasse, die das Vorhandensein der Methode "_fix_up()" angibt.
- Klasse google.appengine.ext.ndb.ModelKeyQuelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Spezielle Property zum Speichern des Modellschlüssels.
- Klasse google.appengine.ext.ndb.MetaModel(name, bases, Klassedict)Quelle
-
Basiert auf: type
Metaklasse für das Modell.
Wird zum Aufbereiten der Properties benötigt, da sie ihren Namen kennen müssen. Hierfür wird die Klassenmethode "_fix_properties()" aufgerufen.
- Klasse google.appengine.ext.ndb.Model(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model._NotEqualMixin
Eine Klasse, die Cloud Datastore-Entitäten beschreibt.
Modellinstanzen werden normalerweise Entitäten genannt. Alle Modellklassen, die Elemente aus dem Modell übernehmen, haben automatisch "MetaModel" als Metaklasse, sodass die Properties nach dem Definieren der Klasse korrekt festgelegt werden können.
Aus diesem Grund können Sie mehrere Properties nicht mit demselben Property-Objekt beschreiben. Sie müssen ein eigenes Property-Objekt für jede Property erstellen. Der folgende Code funktioniert beispielsweise nicht:
wrong_prop = StringProperty() class Wrong(Model): wrong1 = wrong_prop wrong2 = wrong_prop
Die Art entspricht normalerweise dem Klassennamen (ausschließlich des Modulnamens oder eines anderen übergeordneten Bereichs). Zum Überschreiben der Art wird eine Klassenmethode namens "_get_kind()" definiert:
class MyModel(Model): @classmethod def _get_kind(cls): return 'AnotherKind'
- Klassenmethode allocate_ids(size=None, max=None, parent=None, **ctx_options)Quelle
Ordnet dieser Modellklasse einen Bereich von Schlüssel-IDs zu.
Parameter-
size – Anzahl der zuzuordnenden IDs. Es kann entweder "size" oder "max" angegeben werden, nicht beides.
-
max – Die höchste zuzuordnende ID. Es kann entweder "size" oder "max" angegeben werden, nicht beides.
-
parent – Übergeordneter Schlüssel, für den die IDs zugeordnet werden.
-
**ctx_options: Kontextoptionen
Ein Tupel mit (start, end) für den zugeordneten Bereich (einschließlich)
-
- Klassenmethode allocate_ids_async(size=None, max=None, parent=None, **ctx_options)Quelle
-
Ordnet dieser Modellklasse einen Bereich von Schlüssel-IDs zu.
Dies ist die asynchrone Version von "Model._allocate_ids()".
- Klassenmethode get_by_id(*args, **kwds)Quelle
Gibt eine Instanz der Modellklasse nach ID zurück.
Dies ist nur eine Kurzschreibweise für "Key(cls, id, …).get()".
Parameter-
id: Eine String- oder Ganzzahlschlüssel-ID
-
parent: Optionaler übergeordneter Schlüssel des Modells, das abgerufen werden soll
-
namespace: Optionaler Namespace
-
app: Optionale Anwendungs-ID
-
**ctx_options: Kontextoptionen
Eine Modellinstanz oder "None", falls keine gefunden wurde
-
- Klassenmethode get_by_id_async(*args, **kwds)Quelle
-
Gibt eine Instanz der Modellklasse nach ID (und Anwendung, Namespace) zurück.
Dies ist die asynchrone Version von "Model._get_by_id()".
- Klassenmethode get_or_insert(*args, **kwds)sourc
Ruft eine vorhandene Entität transaktional ab oder erstellt eine neue.
- Positionsargumente:
-
name: Schlüsselname, der abgerufen oder erstellt werden soll.
-
namespace: Optionaler Namespace
-
app: Optionale Anwendungs-ID
-
parent: Übergeordneter Entitätsschlüssel, sofern vorhanden.
-
context_options – ContextOptions-Objekt (keine Schlüsselwortargumente) oder "None".
-
**kwds – Schlüsselwortargumente, die an den Konstruktor der Modellklasse zu übergeben sind, wenn noch keine Instanz für den angegebenen Schlüsselnamen existiert. Ist eine Instanz mit dem angegebenen "key_name" und "parent" bereits vorhanden, werden diese Argumente verworfen.
Vorhandene Instanz der Modellklasse mit dem angegebenen Schlüsselnamen und übergeordneten Entitätsschlüssel oder eine neue Instanz, die gerade erstellt wurde.
- Klassenmethode get_or_insert_async(*args, **kwds)Quelle
-
Ruft eine vorhandene Entität transaktional ab oder erstellt eine neue.
Dies ist die asynchrone Version von "Model._get_or_insert()".
- Klassenmethode gql(query_string, *args, **kwds)Quelle
-
Führt eine GQL-Abfrage aus.
- has_complete_key()source
-
Gibt an, ob diese Entität einen vollständigen Schlüssel hat.
- key
-
Spezielle Property zum Speichern des Modellschlüssels.
- populate(**kwds)source
-
Füllt eine Instanz aus Schlüsselwortargumenten.
Jedes Schlüsselwortargument wird verwendet, um eine entsprechende Property festzulegen. Schlüsselwörter müssen auf gültige Property-Namen verweisen. Dies ist vergleichbar mit der Übergabe von Schlüsselwortargumenten an den Modellkonstruktor, allerdings werden "key", "id" und "parent" nicht bereitgestellt.
- put(**ctx_options)Quelle
Schreibt diese Entität in Cloud Datastore.
Wenn der Vorgang einen Schlüssel erstellt oder vervollständigt, wird das Schlüsselattribut der Entität auf den neuen, vollständigen Schlüssel gesetzt.
Gibt Folgendes zurück:Den Schlüssel für die Entität. Dies ist immer ein vollständiger Schlüssel.
- put_async(**ctx_options)source
-
Schreibt diese Entität in Cloud Datastore.
Dies ist die asynchrone Version von "Model._put()".
- Klassenmethode query(*args, **kwds)Quelle
Erstellt ein Abfrageobjekt für diese Klasse.
Parameter-
distinct: Optionaler boolescher Wert, Kurzschreibweise für "group_by = projection"
-
*args: Wird verwendet, um einen anfänglichen Filter anzuwenden
-
**kwds: Werden an den Query()-Konstruktor übergeben
Ein Abfrageobjekt
-
- to_dict(*args, **kwds)source
Gibt ein Dictionary zurück, das die Property-Werte der Entität enthält.
Parameter-
include: Optionaler Satz von Property-Namen, die eingeschlossen werden sollen. Der Standardwert ist "all".
-
exclude: Optionaler Satz von Property-Namen, die übersprungen werden sollen. Der Standardwert ist "None". Ein Name, der sowohl in "include" als auch in "exclude" enthalten ist, wird ausgeschlossen.
-
- Klasse google.appengine.ext.ndb.Expando(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.Model
Abgeleitete Modellklasse zur Unterstützung dynamischer Property-Namen und -Typen.
Weitere Informationen finden Sie unter dem Modul "docstring".
- google.appengine.ext.ndb.transaction(*args, **kwds)Quelle
Führt einen Callback in einer Transaktion aus.
Parameter-
callback: Eine aufzurufende Funktion oder ein aufzurufendes Tasklet
-
**ctx_options: Transaktionsoptionen
- Nützliche Optionen:
-
retries=N: Wiederholt den Vorgang bis zu N Mal (also N + 1 Wiederholversuche). propagation=<flag>: Bestimmt, wie eine vorhandene Transaktion
weitergegeben, wobei <flag> einer der folgenden sein kann: TransactionOptions.NESTED: Startet eine verschachtelte Transaktion (dies ist die
Standardeinstellung. Allerdings sind verschachtelte Transaktionen derzeit noch nicht implementiert, sodass Sie diese Option nur außerhalb einer vorhandenen Transaktion verwenden können.
TransactionOptions.MANDATORY: Eine Transaktion muss sich bereits in Ausführung befinden. TransactionOptions.ALLOWED: Wenn eine Transaktion bereits läuft, wird sie einbezogen. TransactionOptions.INDEPENDENT: Startet immer eine neue parallele Transaktion.
- xg=True: Aktiviert im High Replication-Datenspeicher gruppenübergreifende
-
Transaktionen, sodass in maximal fünf Entitätengruppen geschrieben werden kann.
- read_only=True: Gibt an, dass eine Transaktion keine Schreibvorgänge ausführt, was
-
den Durchsatz potenziell erhöhen kann.
WARNUNG: Die Verwendung eines anderen Weitergabe-Flags als NESTED kann ungewöhnliche Folgen haben. Wenn Sie ALLOWED oder MANDATORY verwenden und eine Ausnahme ausgelöst wird, ist die Wahrscheinlichkeit groß, dass ein Commit der Transaktion nicht sicher ausgeführt werden kann. Bei Verwendung von INDEPENDENT ist die Rückgabe von gelesenen Werten an den Aufrufer generell unsicher, da die Werte nicht in der Transaktion des Aufrufers gelesen wurden.
Gibt Folgendes zurück:Alles, was "callback()" zurückgibt
Löst aus-
Was immer callback() auslöst; datastore_errors.TransactionFailedError
-
"datastore_errors.TransactionFailedError", falls die Transaktion fehlgeschlagen ist
-
- google.appengine.ext.ndb.transaction_async(*args, **kwds)Quelle
-
Führt einen Callback in einer Transaktion aus.
Dies ist die asynchrone Version von "transaction()".
- google.appengine.ext.ndb.in_transaction()Quelle
-
Gibt an, ob eine Transaktion gerade aktiv ist.
- google.appengine.ext.ndb.transactional(_func=None, **options)Quelle
- google.appengine.ext.ndb.transactional_async(_func=None, **options)Quelle
- google.appengine.ext.ndb.transactional_tasklet(_func=None, **options)Quelle
- google.appengine.ext.ndb.non_transactional(_func=None, **options)Quelle
- google.appengine.ext.ndb.get_multi(keys, **ctx_options)Quelle
Ruft eine Abfolge von Schlüsseln ab.
Parameter-
keys: Eine Abfolge von Schlüsseln
-
**ctx_options: Kontextoptionen
Eine Liste mit Modellinstanzen oder "None", falls der Schlüssel nicht gefunden wurde.
-
- google.appengine.ext.ndb.get_multi_async(keys, **ctx_options)Quelle
Ruft eine Abfolge von Schlüsseln ab.
Parameter-
keys: Eine Abfolge von Schlüsseln
-
**ctx_options: Kontextoptionen
Eine Liste von Futures.
-
- google.appengine.ext.ndb.put_multi(entities, **ctx_options)Quelle
Speichert eine Abfolge von Modellinstanzen.
Parameter-
entities: Eine Abfolge von Modellinstanzen
-
**ctx_options: Kontextoptionen
Eine Liste mit den gespeicherten Schlüsseln.
-
- google.appengine.ext.ndb.put_multi_async(entities, **ctx_options)Quelle
Speichert eine Abfolge von Modellinstanzen.
Parameter-
entities: Eine Abfolge von Modellinstanzen
-
**ctx_options: Kontextoptionen
Eine Liste von Futures.
-
- google.appengine.ext.ndb.delete_multi(keys, **ctx_options)Quelle
Löscht eine Abfolge von Schlüsseln.
Parameter-
keys: Eine Abfolge von Schlüsseln
-
**ctx_options: Kontextoptionen
Eine Liste, deren Elemente alle "None" sind, jeweils ein "None" pro gelöschter Schlüssel.
-
- google.appengine.ext.ndb.delete_multi_async(keys, **ctx_options)Quelle
Löscht eine Abfolge von Schlüsseln.
Parameter-
keys: Eine Abfolge von Schlüsseln
-
**ctx_options: Kontextoptionen
Eine Liste von Futures.
-
- google.appengine.ext.ndb.get_indexes(**ctx_options)Quelle
Ruft eine Datenstruktur ab, die die konfigurierten Indexe darstellt.
Parameter**ctx_options: Kontextoptionen
Gibt Folgendes zurück:Eine Liste von Indexobjekten.
- google.appengine.ext.ndb.get_indexes_async(**ctx_options)Quelle
Ruft eine Datenstruktur ab, die die konfigurierten Indexe darstellt.
Parameter**ctx_options: Kontextoptionen
Gibt Folgendes zurück:Ein Future
- google.appengine.ext.ndb.make_connection(config=None, default_model=None, _api_version=u'datastore_v3', _id_resolver=None)Quelle
-
Erstellt ein neues Verbindungsobjekt mit dem richtigen Adapter.
Optional können Sie ein datastore_rpc.Configuration-Objekt übergeben.
- Klasse google.appengine.ext.ndb.BlobProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert ein Bytestring ist. Kann komprimiert sein.
- Klasse google.appengine.ext.ndb.JsonProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.BlobProperty
Eine Property, deren Wert ein beliebiges JSON-codierbares Python-Objekt ist.
- Klasse google.appengine.ext.ndb.StringProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.TextProperty
Eine indexierte Property, deren Wert ein Textstring begrenzter Länge ist.
- Klasse google.appengine.ext.ndb.FloatProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert den Python-Typ "float" hat.
Hinweis: "int", "long" und "bool" sind ebenfalls zulässig.
- google.appengine.ext.ndb.BadProjectionError
-
Alias von InvalidPropertyError.
- Klasse google.appengine.ext.ndb.LocalStructuredProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model._StructuredGetForDictMixin, google.appengine.ext.ndb.model.BlobProperty
Unterstruktur, die zu einem intransparenten Blob serialisiert ist.
Dies sieht auf Python-Seite wie "StructuredProperty" aus, wird aber wie eine "BlobProperty" in Cloud Datastore geschrieben. Es gibt keine Indexierung und Sie können keine untergeordneten Properties abfragen. Auf der anderen Seite ist die Darstellung auf Datenträger effizienter und kann durch Übergabe von "compressed=True", wodurch die Blob-Daten mit gzip komprimiert werden, noch effizienter gemacht werden.
- Klasse google.appengine.ext.ndb.TimeProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.DateTimeProperty
Eine Property, deren Wert ein Zeitobjekt ist.
- Klasse google.appengine.ext.ndb.UserProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert ein Nutzerobjekt ist.
Hinweis: Dies soll lediglich die Abwärtskompatibilität mit vorhandenen Cloud Datastore-Schemas gewährleisten. Die direkte Speicherung von Nutzerobjekten in Cloud Datastore wird nicht empfohlen. Speichern Sie stattdessen den Wert von "user.user_id()".
- Ausnahme google.appengine.ext.ndb.InvalidPropertyErrorQuelle
-
Basis: google.appengine.api.datastore_errors.Error
Wird ausgelöst, wenn eine Property für einen bestimmten Zweck nicht geeignet ist.
Eine Property muss beispielsweise vorhanden und indexiert sein, damit sie in der Projektions- oder GROUP BY-Klausel einer Abfrage verwendet werden kann.
- Ausnahme google.appengine.ext.ndb.KindErrorQuelle
-
Basis: google.appengine.api.datastore_errors.BadValueError
Wird ausgelöst, wenn eine Implementierung für eine Art nicht gefunden werden kann.
Wird auch ausgelöst, wenn die Art kein 8-Bit-String ist.
- Klasse google.appengine.ext.ndb.ComputedProperty(func, name=None, indexed=None, repeated=None, verbose_name=None)Quelle
Basis: google.appengine.ext.ndb.model.GenericProperty
Eine Property, deren Wert durch eine vom Nutzer angegebene Funktion bestimmt wird.
Berechnete Properties können nicht direkt festgelegt werden, sondern werden bei Bedarf von einer Funktion generiert. Sie sind zur Bereitstellung von Feldern in Cloud Datastore nützlich, die zum Filtern oder Sortieren verwendet werden können, ohne den Wert manuell im Code festlegen zu müssen. So kann beispielsweise nach der Länge einer BlobProperty sortiert oder mithilfe eines Gleichheitsfilters geprüft werden, ob ein anderes Feld nicht leer ist.
"ComputedProperty" kann als normale Property deklariert werden, wobei eine Funktion als erstes Argument übergeben wird. Sie kann auch als Decorator für die Funktion, die die Berechnung ausführt, verwendet werden.
Beispiel:
>>> class DatastoreFile(Model): ... name = StringProperty() ... name_lower = ComputedProperty(lambda self: self.name.lower()) ... ... data = BlobProperty() ... ... @ComputedProperty ... def size(self): ... return len(self.data) ... ... def _compute_hash(self): ... return hashlib.sha1(self.data).hexdigest() ... hash = ComputedProperty(_compute_hash, name='sha1')
- Klasse google.appengine.ext.ndb.KeyProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert ein Schlüsselobjekt ist.
Optionales Schlüsselwortargument: kind=<kind>. Dieses legt fest, dass die Schlüssel, die dieser Property zugeordnet sind, immer die angegebene Art haben. Kann ein String oder eine abgeleitete Modellklasse sein.
- Klasse google.appengine.ext.ndb.BooleanProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert den Python-Typ "bool" hat.
- Klasse google.appengine.ext.ndb.PickleProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.BlobProperty
Eine Property, deren Wert ein beliebiges Python-Objekt ist, für das sich ein Pickling ausführen lässt.
- Klasse google.appengine.ext.ndb.IntegerProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert den Python-Typ "int" oder "long" (oder "bool") hat.
- Klasse google.appengine.ext.ndb.Property(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.ModelAttribute
Eine Klasse, die ein typisiertes, persistentes Attribut einer Cloud Datastore-Entität beschreibt.
Nicht zu verwechseln mit der integrierten "property" von Python.
Dies ist nur eine Basisklasse. Es gibt spezielle abgeleitete Klassen, die Properties unterschiedlichen Typs beschreiben (und "GenericProperty", die eine dynamisch typisierte Property beschreibt).
Die Namen von allen speziellen Property-Attributen beginnen mit einem Unterstrich. Dies trifft sogar auf Attribute zu, die als "öffentlich" gelten. Grund hierfür ist der Property-Typ "StructuredProperty", der den Attribut-Namespace ohne Unterstrich verwendet, um auf verschachtelte Property-Namen zu verweisen. Dies ist für die Angabe von Abfragen für untergeordnete Properties unverzichtbar (siehe das Modul "docstring").
Die Property-Klasse und ihre vordefinierten abgeleiteten Klassen ermöglichen ein einfaches Erstellen von abgeleiteten Klassen mithilfe von zusammensetzbaren (oder stapelbaren) Validierungs- und Konvertierungs-APIs. Einige Begriffe müssen in diesem Zusammenhang erläutert werden:
-
Ein "Nutzerwert" ist ein Wert, der durch den Anwendungscode unter Verwendung von Standardattributen für die Entität festgelegt und abgerufen wird.
-
Ein "Basiswert" ist ein Wert, der in Cloud Datastore serialisiert und deserialisiert wird.
Die Werte, die in "ent._values[name]" gespeichert sind und von "_store_value()" und "_retrieve_value()" abgerufen werden, können entweder Nutzerwerte oder Basiswerte sein. Verwenden Sie "_get_user_value()", um Nutzerwerte abzurufen. Zum Abrufen von Basiswerten verwenden Sie _get_base_value(). Insbesondere ruft "_get_value()" die "_get_user_value()" und "_serialize()" effektiv den "_get_base_value()" auf.
Rufen Sie zum Speichern eines Nutzerwerts einfach _store_value() auf. Fügen Sie den Wert in einen _BaseValue() ein und rufen Sie dann _store_value() auf, um einen Basiswert zu speichern.
Eine abgeleitete Property-Klasse zur Implementierung einer bestimmten Transformation zwischen Nutzerwerten und serialisierbaren Werten sollte zwei Methoden implementieren: _to_base_type() und _from_base_type(). Diese sollten NICHT ihre super()-Methode aufrufen; Superaufrufe werden von _call_to_base_type() und _call_from_base_type() übernommen. Dies ist das Konzept von zusammensetzbaren (oder stapelbaren) APIs.
Die API unterstützt Stacking-Klassen mit immer komplexeren Konvertierungen zwischen Nutzer- und Basiswerten: Die Konvertierung von Nutzer- zu Basiswert geht von sehr komplex zu weniger komplex, während die umgekehrte Konvertierung von weniger komplex zu sehr komplex geht. Sehen Sie sich als Beispiel die Beziehung zwischen "BlobProperty", "TextProperty" und "StringProperty" an.
Neben "_to_base_type()" und "_from_base_type()" ist die Methode "_validate()" ebenfalls eine zusammensetzbare API.
Die Validierungs-API unterscheidet zwischen "laxen" und "strikten" Nutzerwerten. Die Menge der laxen Werte ist eine Obermenge der Menge der strikten Werte. Die Methode "_validate()" nimmt einen laxen Wert an und wandelt ihn bei Bedarf in einen strikten Wert um. Dies bedeutet, dass beim Festlegen des Property-Werts laxe Werte angenommen werden, während beim Abrufen des Property-Werts nur strikte Werte zurückgegeben werden. Wenn keine Konvertierung erforderlich ist, kann "_validate()" den Wert "None" zurückgeben. Liegt das Argument außerhalb der Menge von akzeptierten laxen Werten, sollte "_validate()" eine Ausnahme auslösen, vorzugsweise "TypeError" oder "datastore_errors.BadValueError".
Beispiel/Standardcode:
- def _validate(self, value):
-
‘Lax user value to strict user value.’ if not isinstance(value, <top type>):
raise TypeError(…) # Oder datastore_errors.BadValueError(…).
- def _to_base_type(self, value):
-
‘(Strict) user value to base value.’ if isinstance(value, <user type>):
return <base type>(value)
- def _from_base_type(self, value):
-
‘base value to (strict) user value.’ if not isinstance(value, <base type>):
return <user type>(value)
Für Folgendes sind "_validate()", "_to_base_type()" und "_from_base_type()" nicht zuständig:
-
"None": Sie werden nicht mit "None" aufgerufen. Wenn sie "None" zurückgeben, bedeutet dies, dass der Wert nicht konvertiert werden muss.
-
Wiederholte Werte: Die Infrastruktur ("_get_user_value()" und "_get_base_value()") übernimmt den Aufruf von "_from_base_type()" oder "_to_base_type()" für jedes Listenelement in einem wiederholten Wert.
-
Wrapping von Werten in "_BaseValue()": Das Wrapping und Unwrapping wird von der Infrastruktur übernommen, die die zusammensetzbaren APIs aufruft.
-
Vergleiche: Die Vergleichsvorgänge rufen "_to_base_type()" für ihre Operanden auf.
-
Unterscheidung zwischen Nutzer- und Basiswerten: Die Infrastruktur gewährleistet, dass "_from_base_type()" mit einem (nicht eingebetteten) Basiswert und "_to_base_type()" mit einem Nutzerwert aufgerufen wird.
-
Rückgabe des ursprünglichen Werts: Bei Rückgabe des Werts "None" wird der ursprüngliche Wert beibehalten. Wird ein anderer Wert als "None" zurückgegeben, wird der andere Wert an die Stelle gesetzt.
- IN(value)Quelle
-
Vergleichsoperator für den Vergleichsoperator "in".
Der Python-Operator "in" kann nicht auf die gewünschte Art und Weise überladen werden. Daher wird eine Methode definiert. Beispiel:
Employee.query(Employee.rank.IN([4, 5, 6]))
Die Methode heißt ._IN(), wird aber normalerweise als .IN() aufgerufen. ._IN() wird für den Fall bereitgestellt, dass eine StructuredProperty mit einem Modell mit einem Attribut namens "IN" vorhanden ist.
-
- Klasse google.appengine.ext.ndb.DateProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.DateTimeProperty
Eine Property, deren Wert ein Datumsobjekt ist.
- Klasse google.appengine.ext.ndb.TextProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model.BlobProperty
Eine nicht indexierte Property, deren Wert ein Textstring mit unbegrenzter Länge ist.
- Klasse google.appengine.ext.ndb.DateTimeProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert ein Datum-/Uhrzeit-Objekt ist.
Hinweis: Anders als bei Django kann "auto_now_add" überschrieben werden. Legen Sie dazu den Wert fest, bevor Sie die Entität schreiben. Außerdem unterstützt "auto_now" im Gegensatz zu Classic DB keinen Standardwert. Ein weiterer Unterschied zu Classic DB besteht darin, dass die Property-Werte beim Schreiben der Entität entsprechend aktualisiert werden. Dabei ist zu beachten, dass damit auch der Wert im aktuellen Cache aktualisiert wird und "auto_now_add" unter Umständen merkwürdig mit Transaktionswiederholungen interagiert (bei der Wiederholung einer Property mit festgelegtem "auto_now_add" wird der Wert wiederverwendet, der beim ersten Versuch festgelegt war).
- Klasse google.appengine.ext.ndb.GenericProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert (fast) jeder Basistyp sein kann.
Diese Property wird hauptsächlich für Expando und verwaiste Werte verwendet, die zwar in Cloud Datastore vorhanden sind, aber in der abgeleiteten Modellklasse nicht dargestellt werden. Sie kann aber auch explizit für Properties mit dynamisch typisierten Werten eingesetzt werden.
"compressed=True" wird unterstützt. Dies ist nur für str-Werte (nicht für Unicode) gültig und impliziert "indexed=False".
- Ausnahme google.appengine.ext.ndb.UnprojectedPropertyErrorQuelle
-
Basis: google.appengine.api.datastore_errors.Error
Wird ausgelöst, wenn ein Property-Wert abgerufen wird, der nicht in der Projektion enthalten ist.
- Klasse google.appengine.ext.ndb.StructuredProperty(*args, **kwds)Quelle
-
Basis: google.appengine.ext.ndb.model._StructuredGetForDictMixin
Eine Property, deren Wert selbst eine Entität ist.
Die Werte der untergeordneten Entität sind indexiert und können abgefragt werden.
Weitere Informationen erhalten Sie im Modul "docstring".
- IN(value)source
- Klasse google.appengine.ext.ndb.GeoPtProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert ein GeoPt ist.
- Ausnahme google.appengine.ext.ndb.ComputedPropertyErrorQuelle
-
Basis: google.appengine.ext.ndb.model.ReadonlyPropertyError
Wird beim Versuch ausgelöst, einen Wert für eine berechnete Property festzulegen oder eine solche zu löschen
- Klasse google.appengine.ext.ndb.BlobKeyProperty(*args, **kwds)Quelle
-
Basiert auf: google.appengine.ext.ndb.model.Property
Eine Property, deren Wert ein BlobKey-Objekt ist.
- Ausnahme google.appengine.ext.ndb.ReadonlyPropertyErrorQuelle
-
Basis: google.appengine.api.datastore_errors.Error
Wird beim Versuch ausgelöst, einen schreibgeschützten Property-Wert festzulegen
- Klasse google.appengine.ext.ndb.Query(*args, **kwds)Quelle
-
Basiert auf: object
Abfrageobjekt.
Wird normalerweise durch Aufrufen von "Model.query()" erstellt.
Beispiele finden Sie unter dem Modul "docstring".
Beachten Sie, dass nicht alle Vorgänge für Abfragen von _MultiQuery-Instanzen unterstützt werden. Letzteres wird bei Bedarf generiert, wenn einer der Operatoren !=, IN oder OR verwendet wird.
- analyze()source
-
Gibt eine Liste mit den von einer Abfrage benötigten Parametern zurück.
- ancestor
-
Zugriffsfunktion für den Ancestor (ein Schlüssel oder "None").
- app
-
Zugriffsfunktion für die Anwendung (ein String oder "None").
- bind(*args, **kwds)source
-
Bindet Parameterwerte. Gibt ein neues Abfrageobjekt zurück.
- count(*args, **kwds)source
Zählt die Anzahl der Abfrageergebnisse bis zu einem Limit.
Dies gibt dasselbe Ergebnis wie "len(q.fetch(limit))" zurück, allerdings effizienter.
Sie müssen einen Höchstwert übergeben, um den Arbeitsaufwand der Abfrage zu begrenzen.
Parameter-
limit: Wie viele Ergebnisse maximal gezählt werden sollen.
-
**q_options: Alle Schlüsselwortargumente für Abfrageoptionen werden unterstützt.
Gibt Folgendes zurück:
-
- count_async(*args, **kwds)source
-
Zählt die Anzahl der Abfrageergebnisse bis zu einem Limit.
Dies ist die asynchrone Version von "Query.count()".
- default_options
-
Zugriffsfunktion für "default_options" (eine Instanz von "QueryOptions" oder "None").
- fetch(*args, **kwds)source
Ruft eine Liste von Abfrageergebnissen bis zu einem Limit ab.
Parameter-
limit: Wie viele Ergebnisse maximal abgerufen werden sollen.
-
**q_options: Alle Schlüsselwortargumente für Abfrageoptionen werden unterstützt.
Eine Liste von Ergebnissen.
-
- fetch_async(*args, **kwds)source
-
Ruft eine Liste von Abfrageergebnissen bis zu einem Limit ab.
Dies ist die asynchrone Version von "Query.fetch()".
- fetch_page(*args, **kwds)source
Ruft eine Seite mit Ergebnissen ab.
Dies ist eine spezielle Methode, die von Benutzeroberflächen zum Durchblättern von Ergebnisseiten verwendet wird.
Parameterpage_size – Die angeforderte Seitengröße. Diese Anzahl von Ergebnissen wird maximal zurückgegeben.
Darüber hinaus wird jedes von der Klasse "QueryOptions" unterstützte Schlüsselwortargument unterstützt. Um insbesondere die nächste Seite abzurufen, übergeben Sie den von einem Aufruf zurückgegebenen Cursor mit „start_cursor=<cursor>“ an den nächsten Aufruf. Eine gängige Vorgehensweise ist die Übergabe des Cursors an den Client mit „<cursor>.to_websafe_string()“ und die Rekonstruktion dieses Cursors bei einer nachfolgenden Anfrage mit „Cursor.from_websafe_string(<string>)“.
Gibt Folgendes zurück:Ein Tupel (Ergebnisse, Cursor, Sonstiges). Dabei bezieht sich "Ergebnisse" auf eine Liste von Abfrageergebnissen, "Cursor" auf einen Cursor, der unmittelbar nach dem letzten zurückgegebenen Ergebnis auf etwas verweist, und "Sonstiges" auf einen booleschen Wert, der darüber Aufschluss gibt, ob danach (voraussichtlich) noch mehr Ergebnisse zu erwarten sind.
- fetch_page_async(*args, **kwds)Quelle
-
Ruft eine Seite mit Ergebnissen ab.
Dies ist die asynchrone Version von "Query.fetch_page()".
- filter(*args)source
-
Gibt eine neue Abfrage mit zusätzlichen angewendeten Filtern zurück.
- filters
-
Zugriffsfunktion für die Filter (ein Knoten oder "None").
- get(**q_options)source
Ruft das erste Abfrageergebnis ab, sofern vorhanden.
Dies entspricht in etwa dem Aufruf von "q.fetch(1)" und der Rückgabe des ersten Elements der Ergebnisliste, sofern vorhanden. Ist ansonsten "None".
Parameter**q_options: Alle Schlüsselwortargumente für Abfrageoptionen werden unterstützt.
Gibt Folgendes zurück:Ein einzelnes Ergebnis oder "None", wenn keine Ergebnisse vorliegen.
- get_async(**q_options)source
-
Ruft das erste Abfrageergebnis ab, sofern vorhanden.
Dies ist die asynchrone Version von "Query.get()".
- group_by
-
Zugriffsfunktion für die "group_by"-Properties (eine Tupelinstanz oder "None").
- is_distinct
-
"True", wenn die Ergebnisse garantiert einen eindeutigen Satz von Property-Werten enthalten.
Dies ist der Fall, wenn sich jede Property in "group_by" auch in der Projektion befindet.
- iter(**q_options)source
Erstellt einen Iterator über die Abfrage.
Parameter**q_options: Alle Schlüsselwortargumente für Abfrageoptionen werden unterstützt.
Gibt Folgendes zurück:Ein QueryIterator-Objekt.
- Typ
-
Zugriffsfunktion für die Art (ein String oder "None").
- map(*args, **kwds)source
Ordnet eine Callback-Funktion oder ein Tasklet über die Abfrageergebnisse zu.
Parameter-
callback: Eine Funktion oder ein Tasklet, das bzw. die auf jedes Ergebnis angewendet werden soll. Siehe weiter unten.
-
merge_future: Optionale abgeleitete Future-Klasse. Siehe weiter unten.
-
**q_options – Alle Schlüsselwortargumente für Abfrageoptionen werden unterstützt.
Callback-Signatur: Der Callback wird normalerweise mit einer Entität als Argument aufgerufen. Wenn jedoch "keys_only=True" angegeben ist, wird er mit einem Schlüssel aufgerufen. Wenn "pass_batch_into_callback" außerdem "True" ist, wird der Callback mit drei Argumenten aufgerufen: dem aktuellen Batch, dem Index innerhalb des Batches und der Entität oder dem Schlüssel bei diesem Index. Die Rückgabe des Callbacks ist beliebig. Wenn der Callback "None" ist, wird von einem einfachen Callback ausgegangen, der lediglich die übergebene Entität oder den übergebenen Schlüssel zurückgibt (und "produce_cursors" ignoriert).
Optionales merge_future-Argument: Bei "merge_future" handelt es sich um ein erweitertes Argument, mit dem Sie die Vorgehensweise beim Kombinieren der Callback-Ergebnisse zum Gesamtrückgabewert "map()" überschreiben können. Standardmäßig wird eine Liste von Rückgabewerten für den Callback erstellt. Wenn Sie stattdessen eine der wenigen speziellen Alternativen verwenden, kann die Anordnung geändert werden. Unter „tasklets.MultiFuture“ finden Sie die Standardimplementierung und eine Beschreibung des Protokolls, das das Objekt „merge_future“ standardmäßig implementieren muss. Alternativen aus demselben Modul sind "QueueFuture", "SerialQueueFuture" und "ReducingFuture".
Gibt Folgendes zurück:Wenn die Abfrage abgeschossen wurde und alle Callbacks ihre Ergebnisse zurückgegeben haben, gibt "map()" eine Liste der Ergebnisse aller Callbacks zurück. Sehen Sie sich dazu jedoch "Optionales merge_future-Argument" weiter oben an.
-
- map_async(*args, **kwds)source
-
Ordnet eine Callback-Funktion oder ein Tasklet über die Abfrageergebnisse zu.
Dies ist die asynchrone Version von "Query.map()".
- Namespace
-
Zugriffsfunktion für den Namespace (ein String oder "None").
- order(*args)source
-
Gibt eine neue Abfrage mit zusätzlichen angewendeten Sortierfolgen zurück.
- orders
-
Zugriffsfunktion für die Filter („datastore_query.Order“ oder „None“).
- Projektion
-
Zugriffsfunktion für die projizierten Properties (eine Tupelinstanz oder "None").
- run_to_queue(*args, **kwds)source
-
Führt diese Abfrage aus und füllt die angegebene Warteschlange mit Entitäten.
- Klasse google.appengine.ext.ndb.QueryOptionsQuelle
-
Basis: google.appengine.ext.ndb.context.ContextOptions, google.appengine.datastore.datastore_query.QueryOptions
Unterstützt sowohl Kontext- als auch Abfrageoptionen (insbesondere "use_cache").
- Klasse google.appengine.ext.ndb.Cursor(*args, **kwds)Quelle
-
Basis: google.appengine.datastore.datastore_query._BaseComponent
Eine unveränderliche Klasse, die eine relative Position in einer Abfrage darstellt.
Die durch einen Cursor angegebene Position ist relativ zu einem Ergebnis in einer Abfrage, selbst wenn das Ergebnis aus der gegebenen Abfrage entfernt wurde. In der Regel befindet sich die Position dann unmittelbar nach dem letzten Ergebnis, das von einem Batch zurückgegeben wurde.
Ein Cursor sollte nur für eine Abfrage verwendet werden, deren Signatur identisch mit der Signatur der Abfrage ist, die den Cursor erzeugt hat, oder für eine Abfrage, deren Sortierreihenfolge umgekehrt ist.
- advance(offset, query, conn)Quelle
Verschiebt einen Cursor um die angegebene Abweichung.
Parameter-
offset: Die Abweichung, um die die aktuelle Abfrage verschoben werden soll.
-
query: Eine Abfrage, die mit der Abfrage identisch ist, aus der dieser Cursor hervorging.
-
conn: Die zu verwendende datastore_rpc.Connection.
Einen neuen Cursor, der mithilfe der angegebenen Abfrage um die Abweichung verschoben wird.
-
- static from_bytes(cursor)Quelle
Ruft einen Cursor anhand seiner als Bytestring serialisierten Form ab.
Die serialisierte Form eines Cursors kann sich so ändern, dass eine Abwärtskompatibilität nicht mehr gewährleistet ist. In diesem Fall müssen Cursors über einen neuen Abfrage-Request neu generiert werden.
Parametercursor: Ein serialisierter Cursor, so wie er von ".to_bytes" zurückgegeben wurde.
Gibt Folgendes zurück:Einen Cursor.
Löst aus-
„datastore_errors.BadValueError“ aus, wenn das Cursorargument keinen
-
serialisierten Cursor darstellt.
-
- static from_websafe_string(cursor)Quelle
Ruft einen Cursor anhand seiner websicheren serialisierten Form ab.
Die serialisierte Form eines Cursors kann sich so ändern, dass eine Abwärtskompatibilität nicht mehr gewährleistet ist. In diesem Fall müssen Cursors über einen neuen Abfrage-Request neu generiert werden.
Parametercursor: Ein serialisierter Cursor, so wie er von ".to_websafe_string" zurückgegeben wurde.
Gibt Folgendes zurück:Einen Cursor.
Löst aus-
„datastore_errors.BadValueError“ aus, wenn das Cursorargument kein String ist
-
oder keinen serialisierten Cursor darstellt.
-
- reversed()source
-
VERWORFEN. "reversed()" muss für Cursors nicht mehr aufgerufen werden.
Ein Cursor, der von einer Abfrage zurückgegeben wurde, kann auch in einer Abfrage verwendet werden, deren Sortierreihenfolge umgekehrt wurde. Diese Methode gibt eine Kopie des ursprünglichen Cursors zurück.
- to_bytes()source
-
Serialisiert den Cursor als Bytestring.
- to_websafe_string()source
Serialisiert den Cursor als websicheren String.
Gibt Folgendes zurück:Einen base64-codierten serialisierten Cursor.
- urlsafe()source
Serialisiert den Cursor als websicheren String.
Gibt Folgendes zurück:Einen base64-codierten serialisierten Cursor.
- Klasse google.appengine.ext.ndb.QueryIterator(*args, **kwds)Quelle
-
Basiert auf: object
Dieser Iterator funktioniert sowohl für synchrone als auch asynchrone Aufrufer.
Einfache Schreibweise für synchrone Aufrufer:
- Für die Entität in "Account.query()":
-
<use entity>
Schreibweise für asynchrone Aufrufer:
it = iter(Account.query()) while (yield it.has_next_async()):
entity = it.next() <use entity>
Sie können auch "q.iter([options])" anstelle von "iter(q)" verwenden. Sie haben dann die Möglichkeit, Abfrageoptionen wie "keys_only" oder "produce_cursors" zu übergeben.
Wenn "keys_only" festgelegt ist, gibt "it.next()" einen Schlüssel anstelle einer Entität zurück.
Wenn „prod_cursors“ festgelegt ist, geben die Methoden „it.cursor_before()“ und „it.cursor_after()“ Cursorobjekte zurück, die der Abfrageposition direkt vor und nach dem von „it.next()“ zurückgegebenen Element entsprechen. Bevor „it.next()“ das erste Mal aufgerufen wird lösen beide eine Ausnahme aus. Sobald die Schleife durchlaufen ist, geben beide den Cursor nach dem letzten zurückgegebenen Element zurück. Der Aufruf von "it.has_next()" wirkt sich nicht auf die Cursors aus. Sie müssen "it.next()" aufrufen, bevor die Cursors verschoben werden. Manchmal ist für die Anforderung eines Cursors ein Cloud Datastore-Roundtrip erforderlich. Dies trifft jedoch nicht zu, wenn Sie einen Cursor anfordern, der einer Batchgrenze entspricht. Wenn "produce_cursors" nicht festgelegt ist, lösen beide Methoden immer eine Ausnahme aus.
Beachten Sie, dass Abfragen, die eine speicherinterne Zusammenführung mehrerer Abfragen erfordern (d.h. Abfragen mit den Operatoren „IN“, „!=“ oder „OR“) keine Abfrageoptionen unterstützen.
- cursor_after()source
-
Gibt den Cursor nach dem aktuellen Element zurück.
Sie müssen ein QueryOptions-Objekt mit "produce_cursors=True" übergeben, damit dies funktioniert.
Wenn kein Cursor oder kein aktuelles Element vorhanden ist, wird "BadArgumentError" ausgelöst. Bevor "next()" zurückgegeben wird, gibt es keinen Cursor. Wenn die Schleife durchlaufen ist, wird der Cursor nach dem letzten Element zurückgegeben.
- cursor_before()Quelle
-
Gibt den Cursor vor dem aktuellen Element zurück.
Sie müssen ein QueryOptions-Objekt mit "produce_cursors=True" übergeben, damit dies funktioniert.
Wenn kein Cursor oder kein aktuelles Element vorhanden ist, wird "BadArgumentError" ausgelöst. Bevor "next()" zurückgegeben wird, gibt es keinen Cursor. Wenn die Schleife durchlaufen ist, wird der Cursor nach dem letzten Element zurückgegeben.
- has_next()Quelle
-
Gibt an, ob ein nächstes Element verfügbar ist.
Das Verwendungsmuster finden Sie unter dem Modul "docstring".
- has_next_async(*args, **kwds)source
-
Gibt ein Future zurück, dessen Ergebnis angibt, ob ein nächstes Element verfügbar ist.
Das Verwendungsmuster finden Sie unter dem Modul "docstring".
- index_list()source
-
Gibt die Liste der für diese Abfrage verwendeten Indexe zurück.
Dies gibt eine Liste von Indexdarstellungen zurück, wobei eine Indexdarstellung mit dem von "get_indexes()" zurückgegebenen Ergebnis identisch ist.
Vor dem ersten Ergebnis steht die Information nicht zur Verfügung. In diesem Fall wird "None" zurückgegeben. Dies ist nicht dasselbe wie eine leere Liste. Eine leere Liste bedeutet, dass zum Ausführen der Abfrage kein Index verwendet wurde. In "dev_appserver" kann eine leere Liste auch bedeuten, dass nur integrierte Indexe verwendet wurden. Metadatenabfragen geben hier ebenfalls eine leere Liste zurück.
- Die korrekte Verwendung sieht so aus:
-
q = <modelclass>.query(<filters>) i = q.iter() try:
i.next()
- except Stopiteration:
-
pass
indexes = i.index_list() assert isinstance(indexes, list)
Hinweise: Durch das Erzwingen von "produce_cursors=False" wird hier immer "None" zurückgegeben. Für eine Mehrfachabfrage wird immer "None" zurückgegeben.
- next()source
-
Iterator-Protokoll: Ruft das nächste Element ab oder löst "StopIteration" aus.
- probably_has_next()source
-
Gibt die Information zurück, ob ein nächstes Element (wahrscheinlich) verfügbar ist.
Das ist nicht ganz dasselbe wie "has_next()", da bei
festgelegtem "produce_cursors" verschiedene Kurzschreibweisen möglich sind. Allerdings kann in einigen Fällen (z. B. bei einer Abfrage mit einem "post_filter") ein falsch positives Ergebnis zurückgegeben werden (es wird "True" zurückgegeben, aber "next()" löst "StopIteration" aus). Falsch negative Ergebnisse gibt es nicht.
- Klasse google.appengine.ext.ndb.RepeatedStructuredPropertyPredicate(match_keys, pb, key_prefix)Quelle
-
Basis: google.appengine.datastore.datastore_query.FilterPredicate
- google.appengine.ext.ndb.AND
-
Alias von ConjunctionNode
- google.appengine.ext.ndb.OR
-
Alias von DisjunctionNode
- Klasse google.appengine.ext.ndb.ConjunctionNodeQuelle
-
Basis: google.appengine.ext.ndb.query.Node
Strukturknoten, der einen booleschen "AND"-Operator für zwei oder mehr Knoten darstellt.
- resolve(bindings, used)source
- Klasse google.appengine.ext.ndb.DisjunctionNodeQuelle
-
Basis: google.appengine.ext.ndb.query.Node
Strukturknoten, der einen booleschen "OR"-Operator für zwei oder mehr Knoten darstellt.
- resolve(bindings, used)source
- Klasse google.appengine.ext.ndb.FilterNodeQuelle
-
Basis: google.appengine.ext.ndb.query.Node
Strukturknoten für einen einzelnen Filterausdruck.
- Klasse google.appengine.ext.ndb.PostFilterNodeQuelle
-
Basis: google.appengine.ext.ndb.query.Node
Strukturknoten, der einen speicherinternen Filtervorgang darstellt.
Hiermit werden Filter dargestellt, die vom Datenspeicher nicht ausgeführt werden können, beispielsweise eine Abfrage für einen strukturierten Wert.
- Klasse google.appengine.ext.ndb.FalseNodeQuelle
-
Basis: google.appengine.ext.ndb.query.Node
Strukturknoten für einen immer fehlschlagenden Filter.
- Klasse google.appengine.ext.ndb.NodeQuelle
-
Basiert auf: object
Basisklasse für Strukturknoten für Filterausdrücke.
Strukturknoten werden als unveränderlich angesehen, obwohl sie Parameterinstanzen enthalten können, die dies nicht sind. Insbesondere können zwei identische Strukturen durch dasselbe Knotenobjekt in unterschiedlichen Kontexten dargestellt werden.
- resolve(bindings, used)Quelle
Gibt einen Knoten mit Parametern zurück, die durch die ausgewählten Werte ersetzt wurden.
Parameter-
bindings: Ein Dictionary, das Ganzzahlen und Strings bestimmten Werten zuordnet.
-
used: Ein Dictionary, in dem die Verwendung einer Bindung aufgezeichnet wird.
Eine Knoteninstanz.
-
- Klasse google.appengine.ext.ndb.ParameterNodeQuelle
-
Basis: google.appengine.ext.ndb.query.Node
Strukturknoten für einen parametrisierten Filter.
- resolve(bindings, used)source
- Klasse google.appengine.ext.ndb.ParameterizedThingQuelle
-
Basiert auf: object
Basisklasse für Parameter und "ParameterizedFunction".
Dies steht ausschließlich für isinstance()-Überprüfungen zur Verfügung.
- Klasse google.appengine.ext.ndb.Parameter(key)Quelle
-
Basis: google.appengine.ext.ndb.query.ParameterizedThing
Stellt eine gebundene Variable in einer GQL-Abfrage dar.
"Parameter(1)" entspricht einem Slot mit dem Label ":1" in einer GQL-Abfrage. "Parameter('xyz')" entspricht einem Slot mit dem Label ":xyz".
Der Wert muss durch Aufruf von ".set(value)" separat festgelegt (gebunden) werden.
- key
-
Ruft den Schlüssel ab.
- resolve(bindings, used)source
- Klasse google.appengine.ext.ndb.ParameterizedFunction(func, values)Quelle
-
Basis: google.appengine.ext.ndb.query.ParameterizedThing
Stellt eine GQL-Funktion mit parametrisierten Argumenten dar.
Zum Beispiel steht "ParameterizedFunction('key', [Parameter(1)]) für die GQL-Syntax "KEY(:1)".
- func
- is_parameterized()source
- resolve(bindings, used)source
- values
- google.appengine.ext.ndb.gql(query_string, *args, **kwds)Quelle
Parst einen GQL-Abfragestring.
Parameter-
query_string: Vollständige GQL-Abfrage, z. B. „SELECT * FROM Kind WHERE prop = 1“.
-
**kwds (*args,) –
Falls vorhanden, wird der Parameter zum Aufrufen von "bind()" verwendet.
Eine Instanz von "query_class".
-
- Klasse google.appengine.ext.ndb.Context(conn=None, auto_batcher_Klasse=google.appengine.ext.ndb.context.AutoBatcher, config=None, parent_context=None)Quelle
-
Basiert auf: object
- allocate_ids(*args, **kwds)Quelle
- call_on_commit(callback)Quelle
-
Ruft nach einem erfolgreichen Commit einer Transaktion einen Callback auf.
Außerhalb einer Transaktion wird der Callback sofort aufgerufen.
In einer Transaktion können mehrere Callbacks registriert werden. Beim Commit der Transaktion werden diese Callbacks in der Reihenfolge ihrer Registrierung aufgerufen. Wenn die Transaktion fehlschlägt, werden die Callbacks nicht aufgerufen.
Löst der Callback eine Ausnahme aus, tritt diese normal auf. Wenn also der Callback sofort aufgerufen wird, tritt jede Ausnahme, die von ihm ausgelöst wird, sofort auf. Wenn der Aufruf bis nach dem Commit verschoben wird, werden verbleibende Callbacks übersprungen und die Ausnahme erfolgt über den Aufruf von "transaction()". Allerdings ist die Transaktion an diesem Punkt bereits festgeschrieben.
- clear_cache()Quelle
-
Löscht den speicherinternen Cache.
HINWEIS: Dies wirkt sich nicht auf den Memcache aus.
- Statisch default_cache_policy(key)Quelle
Standardrichtlinie für den Cache.
Dies prüft auf "_use_cache" in der Modellklasse.
Parameterkey – Schlüsselinstanz.
Gibt Folgendes zurück:Einen booleschen Wert oder "None".
- Statisch default_datastore_policy(key)Quelle
Standardrichtlinie für den Datenspeicher.
Dies prüft auf "_use_datastore" in der Modellklasse.
Parameterkey – Schlüsselinstanz.
Gibt Folgendes zurück:Einen booleschen Wert oder "None".
- Statisch default_memcache_policy(key)Quelle
Standardrichtlinie für den Memcache.
Dies prüft auf "_use_memcache" in der Modellklasse.
Parameterkey – Schlüsselinstanz.
Gibt Folgendes zurück:Einen booleschen Wert oder "None".
- Statisch default_memcache_timeout_policy(key)Quelle
Standardrichtlinie für das Memcache-Zeitlimit.
Dies prüft auf "_memcache_timeout" in der Modellklasse.
Parameterkey – Schlüsselinstanz.
Gibt Folgendes zurück:Zu verwendendes Memcache-Zeitlimit (Ganzzahl) oder "None".
- delete(*args, **kwds)Quelle
- flush(*args, **kwds)Quelle
- get(*args, **kwds)Quelle
Gibt eine Modellinstanz anhand des angegebenen Entitätsschlüssels zurück.
Wenn die Cacherichtlinie für den angegebenen Schlüssel aktiviert ist, wird der Kontextcache verwendet.
Parameter-
key – Schlüsselinstanz.
-
**ctx_options – Kontextoptionen.
Eine Modellinstanz, wenn der Schlüssel im Datenspeicher vorhanden ist. Ansonsten "None".
-
- get_cache_policy()Quelle
Gibt die aktuelle Richtlinienfunktion für den Kontextcache zurück.
Gibt Folgendes zurück:Eine Funktion, die eine Schlüsselinstanz als Argument annimmt und einen booleschen Wert zurückgibt, der angibt, ob sie zwischengespeichert werden soll. Kann "None" sein.
- get_datastore_policy()Quelle
Gibt die aktuelle Richtlinienfunktion für den Kontextdatenspeicher zurück.
Gibt Folgendes zurück:Eine Funktion, die eine Schlüsselinstanz als Argument annimmt und einen booleschen Wert zurückgibt, der angibt, ob sie den Datenspeicher verwenden soll. Kann "None" sein.
- get_indexes(*args, **kwds)Quelle
- get_memcache_policy()Quelle
Gibt die aktuelle Richtlinienfunktion für den Memcache zurück.
Gibt Folgendes zurück:Eine Funktion, die eine Schlüsselinstanz als Argument annimmt und einen booleschen Wert zurückgibt, der angibt, ob sie zwischengespeichert werden soll. Kann "None" sein.
- get_memcache_timeout_policy()Quelle
-
Gibt die aktuelle Richtlinienfunktion für das Memcache-Zeitlimit (Ablauf) zurück.
- in_transaction()Quelle
-
Gibt an, ob eine Transaktion gerade aktiv ist.
- iter_query(*args, **kwds)Quelle
- map_query(*args, **kwds)Quelle
- memcache_add(key, value, time=0, namespace=None, deadline=None)Quelle
- memcache_cas(key, value, time=0, namespace=None, deadline=None)Quelle
- memcache_decr(key, delta=1, initial_value=None, namespace=None, deadline=None)Quelle
- memcache_delete(key, seconds=0, namespace=None, deadline=None)Quelle
- memcache_get(key, for_cas=False, namespace=None, use_cache=False, deadline=None)Quelle
Ein Wrapper mit automatischem Batching für "memcache.get()" oder ".get_multi()".
Parameter-
key – Schlüssel, der festzulegen ist. Dies muss ein String sein. Es wird kein Präfix angewendet.
-
for_cas – Wenn "True", werden CAS-IDs für den Kontext angefordert und gespeichert.
-
namespace: Optionaler Namespace
-
deadline – Optionales Zeitlimit für den RPC.
Liefert eine Future, deren Rückgabewert der aus dem Memcache abgerufene Wert oder "None" ist.
-
- memcache_gets(key, namespace=None, use_cache=False, deadline=None)Quelle
- memcache_incr(key, delta=1, initial_value=None, namespace=None, deadline=None)Quelle
- memcache_replace(key, value, time=0, namespace=None, deadline=None)Quelle
- memcache_set(key, value, time=0, namespace=None, use_cache=False, deadline=None)Quelle
- put(*args, **kwds)Quelle
- set_cache_policy(func)Quelle
Legt die Richtlinienfunktion für den Kontextcache fest.
Parameterfunc – Eine Funktion, die eine Schlüsselinstanz als Argument annimmt und einen booleschen Wert zurückgibt, der angibt, ob sie zwischengespeichert werden soll. Kann "None" sein.
- set_datastore_policy(func)Quelle
Legt die Richtlinienfunktion für den Kontextdatenspeicher fest.
Parameterfunc – Eine Funktion, die eine Schlüsselinstanz als Argument annimmt und einen booleschen Wert zurückgibt, der angibt, ob sie den Datenspeicher verwenden soll. Kann "None" sein.
- set_memcache_policy(func)Quelle
Legt die Richtlinienfunktion für den Memcache fest.
Parameterfunc – Eine Funktion, die eine Schlüsselinstanz als Argument annimmt und einen booleschen Wert zurückgibt, der angibt, ob sie zwischengespeichert werden soll. Kann "None" sein.
- set_memcache_timeout_policy(func)Quelle
Legt die Richtlinienfunktion für das Memcache-Zeitlimit (Ablauf) fest.
Parameterfunc – Eine Funktion, die eine Schlüsselinstanz als Argument annimmt und eine Ganzzahl zurückgibt, die das gewünschte Memcache-Zeitlimit angibt. Kann "None" sein.
Wenn die Funktion 0 zurückgibt, impliziert dies das Standardzeitlimit.
- transaction(*args, **kwds)Quelle
- urlfetch(*args, **kwds)Quelle
- Klasse google.appengine.ext.ndb.ContextOptionsQuelle
-
Basis: google.appengine.datastore.datastore_rpc.Configuration
Konfigurationsoptionen, die mit "get", "put" oder "delete" übergeben werden können.
- max_memcache_items
-
Ein Deskriptor für eine Konfigurationsoption.
Diese Klasse wird verwendet, um eine Konfigurationsoption für eine Klasse zu erstellen, die die Einstellungen aus "BaseConfiguration" übernimmt. Eine Validierungsfunktion mit dieser Klasse wird in einen schreibgeschützten Deskriptor umgewandelt und "BaseConfiguration" implementiert die Konstruktor- und Zusammenführungslogik für diese Konfigurationsoption. Eine Validierungsfunktion nimmt einen einzelnen Wert, der nicht "None" ist, zur Validierung an und löst entweder eine Ausnahme aus oder gibt diesen Wert (oder einen entsprechenden Wert) zurück. Eine Validierung wird einmal beim Erstellen aufgerufen, jedoch nur dann, wenn ein Wert, der nicht "None" ist, für die Konfigurationsoption als Schlüsselwortargument des Konstruktors angegeben ist.
- memcache_deadline
-
Ein Deskriptor für eine Konfigurationsoption.
Diese Klasse wird verwendet, um eine Konfigurationsoption für eine Klasse zu erstellen, die die Einstellungen aus "BaseConfiguration" übernimmt. Eine Validierungsfunktion mit dieser Klasse wird in einen schreibgeschützten Deskriptor umgewandelt und "BaseConfiguration" implementiert die Konstruktor- und Zusammenführungslogik für diese Konfigurationsoption. Eine Validierungsfunktion nimmt einen einzelnen Wert, der nicht "None" ist, zur Validierung an und löst entweder eine Ausnahme aus oder gibt diesen Wert (oder einen entsprechenden Wert) zurück. Eine Validierung wird einmal beim Erstellen aufgerufen, jedoch nur dann, wenn ein Wert, der nicht "None" ist, für die Konfigurationsoption als Schlüsselwortargument des Konstruktors angegeben ist.
- memcache_timeout
-
Ein Deskriptor für eine Konfigurationsoption.
Diese Klasse wird verwendet, um eine Konfigurationsoption für eine Klasse zu erstellen, die die Einstellungen aus "BaseConfiguration" übernimmt. Eine Validierungsfunktion mit dieser Klasse wird in einen schreibgeschützten Deskriptor umgewandelt und "BaseConfiguration" implementiert die Konstruktor- und Zusammenführungslogik für diese Konfigurationsoption. Eine Validierungsfunktion nimmt einen einzelnen Wert, der nicht "None" ist, zur Validierung an und löst entweder eine Ausnahme aus oder gibt diesen Wert (oder einen entsprechenden Wert) zurück. Eine Validierung wird einmal beim Erstellen aufgerufen, jedoch nur dann, wenn ein Wert, der nicht "None" ist, für die Konfigurationsoption als Schlüsselwortargument des Konstruktors angegeben ist.
- use_cache
-
Ein Deskriptor für eine Konfigurationsoption.
Diese Klasse wird verwendet, um eine Konfigurationsoption für eine Klasse zu erstellen, die die Einstellungen aus "BaseConfiguration" übernimmt. Eine Validierungsfunktion mit dieser Klasse wird in einen schreibgeschützten Deskriptor umgewandelt und "BaseConfiguration" implementiert die Konstruktor- und Zusammenführungslogik für diese Konfigurationsoption. Eine Validierungsfunktion nimmt einen einzelnen Wert, der nicht "None" ist, zur Validierung an und löst entweder eine Ausnahme aus oder gibt diesen Wert (oder einen entsprechenden Wert) zurück. Eine Validierung wird einmal beim Erstellen aufgerufen, jedoch nur dann, wenn ein Wert, der nicht "None" ist, für die Konfigurationsoption als Schlüsselwortargument des Konstruktors angegeben ist.
- use_datastore
-
Ein Deskriptor für eine Konfigurationsoption.
Diese Klasse wird verwendet, um eine Konfigurationsoption für eine Klasse zu erstellen, die die Einstellungen aus "BaseConfiguration" übernimmt. Eine Validierungsfunktion mit dieser Klasse wird in einen schreibgeschützten Deskriptor umgewandelt und "BaseConfiguration" implementiert die Konstruktor- und Zusammenführungslogik für diese Konfigurationsoption. Eine Validierungsfunktion nimmt einen einzelnen Wert, der nicht "None" ist, zur Validierung an und löst entweder eine Ausnahme aus oder gibt diesen Wert (oder einen entsprechenden Wert) zurück. Eine Validierung wird einmal beim Erstellen aufgerufen, jedoch nur dann, wenn ein Wert, der nicht "None" ist, für die Konfigurationsoption als Schlüsselwortargument des Konstruktors angegeben ist.
- use_memcache
-
Ein Deskriptor für eine Konfigurationsoption.
Diese Klasse wird verwendet, um eine Konfigurationsoption für eine Klasse zu erstellen, die die Einstellungen aus "BaseConfiguration" übernimmt. Eine Validierungsfunktion mit dieser Klasse wird in einen schreibgeschützten Deskriptor umgewandelt und "BaseConfiguration" implementiert die Konstruktor- und Zusammenführungslogik für diese Konfigurationsoption. Eine Validierungsfunktion nimmt einen einzelnen Wert, der nicht "None" ist, zur Validierung an und löst entweder eine Ausnahme aus oder gibt diesen Wert (oder einen entsprechenden Wert) zurück. Eine Validierung wird einmal beim Erstellen aufgerufen, jedoch nur dann, wenn ein Wert, der nicht "None" ist, für die Konfigurationsoption als Schlüsselwortargument des Konstruktors angegeben ist.
- Klasse google.appengine.ext.ndb.TransactionOptionsQuelle
-
Basis: google.appengine.ext.ndb.context.ContextOptions, google.appengine.datastore.datastore_rpc.TransactionOptions
Unterstützt sowohl Kontext- als auch Transaktionsoptionen.
- Klasse google.appengine.ext.ndb.AutoBatcher(todo_tasklet, limit)Quelle
-
Basiert auf: object
Fasst mehrere asynchrone Aufrufe zu Batches zusammen, wenn sie dieselben RPC-Optionen verwenden.
Das folgende Beispiel veranschaulicht die Funktionsweise dieser Klasse.
Lebensdauer eines API-Aufrufs vom Typ "key.get_async(options)": *) "Key" ruft die Singleton-Kontextinstanz ab und ruft "Context.get" auf. *) "Context.get" ruft "Context._get_batcher.add(key, options)" auf. Dies
gibt ein Future vom Typ "fut" als Rückgabewert von "key.get_async" zurück. An diesem Punkt wird "key.get_async" zurückgegeben.
- *) Wenn mehr als die durch "limit" vorgegebene Anzahl von "_get_batcher.add()" aufgerufen wurde,
-
ruft "_get_batcher" sein "self._todo_tasklet" ("Context._get_tasklet") mit der Liste der bisher gelesenen Schlüssel auf.
*) "Context._get_tasklet" löst einen MultiRPC aus und wartet auf dessen Abschluss. *) Nachdem der MultiRPC abgeschlossen wurde, übergibt "Context._get_tasklet" die Ergebnisse
an das jeweilige "fut" aus "key.get_async".
- *) Wenn der Nutzer "'fut'.get_result()" aufruft, bevor die durch "limit" vorgegebene Anzahl von "add()" aufgerufen wurde,
-
ruft "'fut' .get_result()" wiederholt "eventloop.run1()" auf.
- *) Nach Verarbeitung von sofortigen Callbacks führt "eventloop" inaktive Vorgänge aus.
-
"AutoBatcher._on_idle" ist ein inaktiver Vorgang.
*) "_on_idle" führt das "todo_tasklet" aus, bevor der Batch voll ist.
Die Engine ist also ein "todo_tasklet", wobei es sich um ein Proxy-Tasklet handelt, das Argumente zu Batches kombinieren und Ergebnisse an die entsprechenden Futures übergeben kann. Diese Klasse ist in erster Linie eine Hilfsklasse, die "todo_tasklet" mit den richtigen Argumenten zur richtigen Zeit aufruft.
- action()Quelle
- add(arg, options=None)Quelle
Fügt ein Argument hinzu und erhält dafür ein Future.
Parameter-
arg – Ein einziges Argument für "_todo_tasklet".
-
options – RCP-Optionen.
- Eine Future-Instanz, die das Ergebnis der Ausführung von
-
"_todo_tasklet" ohne Batching darstellt.
-
- add_once(arg, options=None)Quelle
- flush(*args, **kwds)Quelle
- run_queue(options, todo)Quelle
-
Führt eigentlich das "_todo_tasklet" aus.