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.

Beispiel

yield 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

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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.

Schlüsselwortargumente
  • 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.

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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

Gibt Folgendes zurück:

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.

Gibt Folgendes zurück:

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.

Parameter

page_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.

Gibt Folgendes zurück:

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.

Parameter

cursor: 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.

Parameter

cursor: 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.

Gibt Folgendes zurück:

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.

Gibt Folgendes zurück:

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.

Parameter

key – 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.

Parameter

key – 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.

Parameter

key – 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.

Parameter

key – 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.

Gibt Folgendes zurück:

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.

Gibt Folgendes zurück:

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.

Parameter

func – 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.

Parameter

func – 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.

Parameter

func – 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.

Parameter

func – 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.

Gibt Folgendes zurück:

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.