Nota: gli sviluppatori che creano nuove applicazioni sono vivamente incoraggiati a utilizzare la libreria client NDB, che offre diversi vantaggi rispetto a questa libreria client, come la memorizzazione nella cache automatica delle entità tramite l'API Memcache. Se attualmente utilizzi la libreria client DB precedente, leggi la Guida alla migrazione dal database a NDB
Un'istanza della classe Key rappresenta una chiave univoca per un'entità Datastore.
Key
è fornito dal modulo google.appengine.ext.db
.
Introduzione
Ogni istanza del modello ha una chiave di identificazione che include il tipo di entità dell'istanza insieme a un identificatore univoco. L'identificatore può essere una stringa nome chiave, assegnata esplicitamente dall'applicazione al momento della creazione dell'istanza, o un ID numerico intero assegnato automaticamente da App Engine quando l'istanza viene scritta (put) in Datastore. Il metodo
key()
dell'istanza del modello restituisce l'oggetto Key
per l'istanza. Se all'istanza non è ancora stata assegnata una chiave, key()
genera un
NotSavedError
.
Un'applicazione può recuperare un'istanza del modello per una determinata chiave utilizzando la funzione get().
Le istanze della chiave possono essere valori per le proprietà dell'entità Datastore, incluse le proprietà dinamiche Espandio e i membri ListProperty. Il modello ReferenceProperty fornisce funzionalità per i valori delle proprietà chiave, come il deriferimento automatico.
Costruttore
- class Chiave(codificata=Nessuna)
-
Una chiave univoca per un oggetto Datastore.
Una chiave può essere convertita in stringa passando l'oggetto Key a
str()
. La stringa è "urlsafe" e utilizza solo caratteri validi per l'uso negli URL. La rappresentazione stringa della chiave può essere riconvertita in un oggetto Key passandola al costruttore della chiave (l'argomento codificato).Nota: la rappresentazione stringa di una chiave sembra criptica, ma non è criptata. Può essere riconvertito in dati chiave non elaborati, sia di tipo che di identificatore. Se non vuoi esporre questi dati ai tuoi utenti (e non consentire loro di indovinare facilmente le chiavi di altre entità), cripta queste stringhe o utilizza qualcos'altro.
- codificato
- Il formato
str
di un'istanza chiave da riconvertire in una chiave.
Metodi delle classi
La classe Key fornisce il seguente metodo di classe:
- Key.from_path(*path, parent=Nessuno, namespace=Nessuno)
-
Crea un nuovo oggetto Key da un percorso predecessore (facoltativo) (in un oggetto Key esistente) e da uno o più nuovi componenti del percorso. Ogni componente del percorso è costituito da un nome del tipo (
kind
) e da un identificatore (id_or_name
), che può essere un numero o una stringa di caratteri.Un percorso rappresenta la gerarchia delle relazioni padre-figlio per un'entità. Ogni entità nel percorso è rappresentata dal tipo di entità e dal suo ID numerico o dal nome della chiave. Il percorso completo rappresenta l'entità che appare per ultima nel percorso, con i predecessori (principali) come entità precedenti.
Ad esempio, la chiamata seguente crea una chiave per un'entità di tipo
Address
con ID numerico9876
, nella chiave padreUser/Boris
:k = Key.from_path('User', 'Boris', 'Address', 9876)
Un modo alternativo per creare la stessa chiave è il seguente:
p1 = Key.from_path('User', 'Boris') k = Key.from_path('Address', 9876, parent=p1)
Per ulteriori informazioni sui percorsi, consulta la pagina Entità, proprietà e chiavi.
Argomenti
- percorso
- Un elenco di uno o più componenti del percorso predecessore, dove ogni componente è costituito da un kind e un identificatore:
- kind: il tipo di entità, rappresentato come una stringa o una stringa Unicode.
- identifier:
id
, specificato come stringa o lunga. Non può essere il numero 0.
- namespace=Nessuno
- Lo spazio dei nomi da impostare solo per questa chiave. Se fornisci uno spazio dei nomi qui, questo sostituisce l'attuale spazio dei nomi impostato in namespace_manager. Se
None
, l'API utilizza lo spazio dei nomi attuale di namespace_manager.get_namespace. - parent=Nessuno
- Chiave principale facoltativa. Se non viene specificato, il valore predefinito è
None
.
Metodi di istanza
Le istanze chiave hanno i seguenti metodi:
- app()
-
Restituisce il nome dell'applicazione che ha archiviato l'entità dati.
- has_id_or_name()
-
Restituisce
True
se l'entità ha un nome o un ID numerico. - id()
-
Restituisce l'ID numerico dell'entità di dati, sotto forma di numero intero, oppure
None
se l'entità non ha un ID numerico. - id_or_name()
-
Restituisce il nome o l'ID numerico dell'entità di dati, a seconda di quale dispone, oppure
None
se l'entità non ha né un nome né un ID numerico. - kind()
-
Restituisce il tipo di entità di dati, sotto forma di stringa.
- name()
-
Restituisce il nome dell'entità dati oppure
None
se l'entità non ha un nome. - spazio dei nomi()
-
Restituisce lo spazio dei nomi dell'entità dati. Se l'entità non ha uno spazio dei nomi attuale, questo metodo restituisce lo spazio dei nomi attuale impostato in namespace_manager.
- parent()
-
Restituisce la chiave dell'entità padre dell'entità di dati oppure
None
se l'entità non ha un elemento padre.