Hinweis: Entwicklern von neuen Anwendungen wird dringend empfohlen, die NDB-Clientbibliothek zu verwenden. Diese bietet im Vergleich zur vorliegenden Clientbibliothek verschiedene Vorteile, z. B. das automatische Caching von Entitäten über die Memcache API. Wenn Sie derzeit die ältere DB-Clientbibliothek verwenden, finden Sie weitere Informationen im Leitfaden zur Migration von DB- zu NDB-Clientbibliotheken.
Eine Instanz der Schlüsselklasse stellt einen eindeutigen Schlüssel für eine Datenspeicherentität dar.
Key
wird vom Modul google.appengine.ext.db
bereitgestellt.
Einführung
Jede Modellinstanz enthält einen Identifizierungsschlüssel, der den Entitätstyp der Instanz und eine eindeutige Kennzeichnung umfasst. Die Kennzeichnung kann entweder ein Schlüsselnamenstring sein, der beim Erstellen der Instanz explizit von der Anwendung zugewiesen wird, oder eine ganzzahlige numerische ID, die beim Schreiben der Instanz in Datastore automatisch von App Engine zugewiesen wird (put-Vorgang). Die Methode
key()
der Modellinstanz gibt das Key
-Objekt für die Instanz zurück. Wenn der Instanz noch kein Schlüssel zugewiesen wurde, löst key()
den Fehler
NotSavedError
aus.
Eine Anwendung kann mithilfe der get() eine Modellinstanz für einen bestimmten Schlüssel abrufen.
Schlüsselinstanzen können Werte für Attribute von Datastore-Entitäten sein, einschließlich dynamische Expando-Attribute und Mitglieder vom Typ ListProperty. Das Modell ReferenceProperty stellt Funktionen wie die automatische Dereferenzierung für Werte von Schlüsselattributen bereit.
Konstruktor
- Klasse Key(encoded=None)
-
Ein eindeutiger Schlüssel für ein Datenspeicherobjekt.
Durch Übergabe des Schlüsselobjekts an
str()
kann ein Schlüssel in einen String konvertiert werden. Der String ist "URL-sicher", d. h., es werden nur Zeichen verwendet, die für URLs zulässig sind. Sie können die Stringdarstellung des Schlüssels wieder in ein Schlüsselobjekt konvertieren. Dazu müssen Sie den Schlüssel an den Schlüsselkonstruktor (das codierte Argument) übergeben.Hinweis: Die Stringdarstellung eines Schlüssels sieht verschlüsselt aus, ist es jedoch nicht. Sie kann wieder in die Schlüsselrohdaten, also Typ und Kennzeichnung, konvertiert werden. Wenn Ihre Nutzer keinen Zugriff auf diese Daten und damit auch nicht die Möglichkeit haben sollen, die Schlüssel anderer Entitäten leicht zu erraten, verschlüsseln Sie diese Strings oder verwenden eine andere Methode.
- encoded
- Die
str
-Form einer Schlüsselinstanz, die wieder in einen Schlüssel konvertiert werden soll.
Klassenmethoden
Die Schlüsselklasse stellt die folgenden Klassenmethoden bereit:
- Key.from_path(*path, parent=None, namespace=None)
-
Erstellt ein neues Schlüsselobjekt aus einem (optionalen) Ancestor-Pfad (in einem vorhandenen Schlüsselobjekt) und einer oder mehreren neuen Pfadkomponenten. Jede Pfadkomponente besteht aus dem Namen eines Typs (
kind
) und einer Kennzeichnung (id_or_name
), die entweder eine Zahl oder ein Zeichenstring ist.Ein Pfad stellt die Hierarchie von Beziehungen über- und untergeordneter Beziehungen für eine Entität dar. Jede Entität im Pfad wird durch den Typ der Entität und ihre numerische ID oder ihren Schlüsselnamen dargestellt. Der vollständige Pfad stellt die Entität dar, die als letzte Entität im Pfad angezeigt wird. Davor sind deren übergeordnete Entitäten zu finden.
Der folgende Aufruf erstellt beispielsweise einen Schlüssel für eine Entität vom Typ
Address
mit der numerischen ID9876
unter dem übergeordneten SchlüsselUser/Boris
:k = Key.from_path('User', 'Boris', 'Address', 9876)
Derselbe Schlüssel kann auch so erstellt werden:
p1 = Key.from_path('User', 'Boris') k = Key.from_path('Address', 9876, parent=p1)
Weitere Informationen zu Pfaden finden Sie auf der Seite Entitäten, Properties und Schlüssel.
Argumente
- path
- Eine oder mehrere Ancestor-Pfadkomponenten, wobei jede Komponente aus einem Typ und einer Kennzeichnung besteht:
- Typ – Der Entitätstyp, dargestellt als String oder Unicode-String.
- Kennzeichnung – Die
id
, angegeben als String oder "long". Die Zahl 0 darf nicht verwendet werden.
- namespace=None
- Der Namespace, der nur für diesen Schlüssel festgelegt werden soll. Wenn Sie hier einen Namespace angeben, wird der aktuelle Namespace in namespace_manager überschrieben. Bei Angabe von
None
verwendet die API den aktuellen Namespace aus namespace_manager.get_namespace. - parent=None
- Optionaler übergeordneter Schlüssel. Standardmäßig wird
None
verwendet, sofern keine Angabe gemacht wird.
Instanzmethoden
Schlüsselinstanzen weisen die folgenden Methoden auf:
- app()
-
Gibt den Namen der Anwendung zurück, in der die Datenentität gespeichert wurde.
- has_id_or_name()
-
Gibt
True
zurück, wenn die Entität entweder einen Namen oder eine numerische ID aufweist. - id()
-
Gibt die numerische ID der Datenentität als Ganzzahl oder
None
zurück, wenn die Entität keine numerische ID hat. - id_or_name()
-
Gibt je nach Vorhandensein entweder den Namen oder die numerische ID der Datenentität oder aber
None
zurück, wenn die Entität weder einen Namen noch eine numerische ID hat. - kind()
-
Gibt den Typ der Datenentität als String zurück.
- name()
-
Gibt den Namen der Datenentität oder
None
zurück, wenn die Entität keinen Namen hat. - namespace()
-
Gibt den Namespace der Datenentität zurück. Wenn die Entität keinen aktuellen Namespace hat, gibt diese Methode den aktuellen Namespace aus namespace_manager zurück.
- parent()
-
Gibt den Schlüssel der übergeordneten Entität der Datenentität oder
None
zurück, wenn die Entität kein übergeordnetes Element hat.