La classe Key

Nota:gli sviluppatori che creano nuove applicazioni sono fortemente incoraggiati a utilizzare la libreria client NDB, che offre diversi vantaggi rispetto a questa libreria client, ad esempio la memorizzazione automatica nella cache delle entità tramite l'API Memcache. Se al momento utilizzi la libreria client DB precedente, leggi la guida alla migrazione da DB 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 identificativa,che include il tipo di entità dell'istanza e un identificatore univoco. L'identificatore può essere una stringa nome chiave, assegnata esplicitamente dall'applicazione quando viene creata l'istanza, o un ID numerico intero,assegnato automaticamente da App Engine quando l'istanza viene scritta (put) nel 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 chiave possono essere valori per le proprietà delle entità Datastore, incluse le proprietà dinamiche Expando e i membri ListProperty. Il modello ReferenceProperty fornisce funzionalità per i valori delle proprietà chiave, ad esempio l'annullamento automatico del riferimento.

Costruttore

class Key(encoded=None)

Una chiave univoca per un oggetto Datastore.

Una chiave può essere convertita in una stringa passando l'oggetto Key a str(). La stringa è "urlsafe", ovvero utilizza solo caratteri validi per l'utilizzo negli URL. La rappresentazione della stringa della chiave può essere riconvertita in un oggetto Key passandola al costruttore Key (l'argomento encoded).

Nota:la rappresentazione di una chiave come stringa sembra criptica, ma non è criptata. Può essere riconvertito nei dati chiave non elaborati, sia di tipo che di identificatore. Se non vuoi esporre questi dati ai tuoi utenti (e consentire loro di indovinare facilmente le chiavi di altre entità), cripta queste stringhe o utilizza qualcos'altro.

codificato
La forma str di un'istanza Key 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 antenato (facoltativo) (in un oggetto Key esistente) e uno o più nuovi componenti del percorso. Ogni componente del percorso è costituito da un nome tipo (kind) e da un identificatore (id_or_name), che è 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 relativi antenati (genitori) come entità precedenti.

Ad esempio, la seguente chiamata crea una chiave per un'entità di tipo Address con ID numerico 9876, nella chiave padre User/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 degli antenati, in cui ogni componente è costituito da un tipo e da un identificatore:
  • kind: il tipo di entità, rappresentato come stringa o stringa Unicode.
  • identifier — Il id, specificato come stringa o numero intero 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 padre facoltativa. Se non viene fornito, il valore predefinito è None.

Metodi dell'istanza

Le istanze chiave hanno i seguenti metodi:

app()

Restituisce il nome dell'applicazione che ha memorizzato l'entità di 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 numero intero o 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 ha, o None se l'entità non ha né un nome né un ID numerico.

kind()

Restituisce il tipo di entità di dati, come stringa.

name()

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

namespace()

Restituisce lo spazio dei nomi dell'entità di 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à principale dell'entità di dati o None se l'entità non ha un elemento principale.