La classe della chiave

Nota: Gli sviluppatori che creano nuove applicazioni sono vivamente incoraggiati a utilizzare il Libreria client NDB, che offre numerosi vantaggi rispetto a questa libreria client, come la memorizzazione automatica nella cache delle entità tramite API. Se al momento utilizzi la libreria client DB precedente, leggi il Guida alla migrazione da 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 un modello chiave, che include i dati dell'istanza tipo di entità insieme a un identificatore univoco. L'identificatore può essere una stringa del nome della chiave, assegnata in modo esplicito dall'applicazione al momento della creazione dell'istanza oppure un ID numerico intero, assegnato automaticamente da App Engine quando l'istanza viene scritta (put) a Datastore. L'istanza del modello key() restituisce l'oggetto Key per l'istanza. Se all'istanza non è ancora stata assegnata una chiave, key() genera una NotSavedError.

Un'applicazione può recuperare un'istanza di modello per una determinata chiave utilizzando la funzione get().

Le istanze chiave possono essere valori per le proprietà di entità Datastore, inclusi le proprietà dinamiche Expando e i membri ListProperty. Il modello ReferenceProperty fornisce funzionalità per i valori delle proprietà chiave, come il dereferenziamento automatico.

Costruttore

class Key(coded=None)

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'utilizzo negli URL. La rappresentazione in formato stringa la chiave può essere riconvertita in oggetto Key e passarla al costruttore della chiave (il codificato).

Nota: la rappresentazione in formato stringa di una chiave ha un aspetto criptico, ma che non sono criptato! Possono essere riconvertiti in dati chiave non elaborati, sia di tipo che identificativo dell'utente. Se non vuoi esporre questi dati ai tuoi utenti (e consenti in modo da indovinare facilmente chiavi di crittografia), quindi cripta queste stringhe o utilizzare qualcos'altro.

codificato
La forma str di un'istanza di chiave da riconvertire in una chiave.

Metodi della classe

La classe Key fornisce il seguente metodo di classe:

Key.from_path(*path, parent=None, namespace=None)

Crea un nuovo oggetto Key da un percorso predecessore (facoltativo) (in un oggetto Key esistente) e uno o più componenti del percorso nuovi. Ogni percorso è costituito da un nome del tipo (kind) e da un identificatore (id_or_name), costituito da un numero o da 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 suo nome chiave. Il percorso completo rappresenta l'entità che appare per ultima nel percorso, con i predecessori (gli elementi principali) come entità precedenti.

Ad esempio, la seguente chiamata crea una chiave per un'entità di tipo Address con ID numerico 9876, sotto la chiave principale User/Boris:

k = Key.from_path('User', 'Boris', 'Address', 9876)

Un metodo 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 tipo e da un identificatore:
  • kind: il tipo di entità, rappresentato come una stringa o una stringa Unicode.
  • identifier: Il parametro id, specificato come stringa o lungo. Non può essere il numero 0.
namespace=None
Lo spazio dei nomi da impostare solo per questa chiave. Se fornisci uno spazio dei nomi qui, questo sostituisce lo spazio dei nomi corrente impostato in namespace_manager. Se None, l'API utilizza lo spazio dei nomi corrente di namespace_manager.get_namespace.
parent=None
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 in cui è stata archiviata 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, come un numero intero, oppure None se l'entità non ha un ID numerico.

id_or_name()

Restituisce il nome o l'ID numerico dell'entità dati, a seconda di quale presenta, oppure None se l'entità non ha né un nome né un ID numerico.

kind()

Restituisce il tipo di entità dati, come stringa.

nome()

Restituisce il nome dell'entità dati o None se l'entità non ha un nome.

namespace()

Restituisce lo spazio dei nomi dell'entità dati. Se l'entità non ha uno spazio dei nomi corrente, questo metodo restituisce lo spazio dei nomi corrente impostato in namespace_manager.

parent()

Restituisce la chiave dell'entità padre dell'entità dati o None se l'entità non ha un elemento padre.