Ogni entità è identificata da una chiave univoca all'interno del Datastore ed è costituito da quanto segue:
- kind. "kind" è in genere il nome della classe del modello a cui l'entità
ma puoi sostituirla con un'altra stringa sostituendo il metodo classmethod
_get_kind()
. - identificatore. Puoi specificare il tuo nome della chiave come identificatore oppure Datastore genera automaticamente un ID numerico intero.
Specifica il nome della tua chiave
L'esempio seguente crea implicitamente una chiave con un identificatore di stringa
utilizzando il parametro denominato id
:
In alternativa, puoi impostare direttamente il nome della chiave:
Consentire a Datastore di generare un ID da utilizzare per la chiave
Questo codice mostra come utilizzare un ID generato automaticamente come chiave:
Utilizzo del percorso dell'antenato nella chiave
La sequenza di entità che inizia con entità base e prosegue dall'entità padre a figlio, che porta a una determinata entità, costituisce il percorso predecessore di quell'entità. Un'entità, la relativa entità principale, l'entità principale dell'entità principale e così via in modo ricorsivo sono gli antenati dell'entità. Le entità in Datastore formano uno spazio chiavi gerarchico in modo simile alla struttura gerarchica delle directory di un file system.
La chiave completa che identifica un'entità è costituita da una sequenza di coppie di tipo-identificatore che specificano il percorso dell'antenato e termina con quelle dell'entità stessa. Il metodo del costruttore della classe Key
accetta una sequenza di tipi e identificativi e restituisce un oggetto che rappresenta la chiave per l'entità corrispondente.
L'esempio seguente mostra un servizio di blogging che archivia i messaggi in base alla revisione. I messaggi sono organizzati per account e le revisioni per messaggi.
...
Nell'esempio, ('Account', 'sandy@example.com')
, ('Message', 123)
e ('Revision', '1')
sono tutti esempi di coppie tipo-identificatore.
Nota che Message
non è una classe di modello. serve solo per raggruppare
le revisioni, non per archiviare i dati.
Come mostrato nel codice campione, il tipo di entità è indicato dall'attributo ultimo
coppia di nome tipo nell'elenco: ndb.Key('Revision', '1')
.
Utilizzo di parametri denominati
Puoi utilizzare il parametro denominato parent
per designare direttamente qualsiasi entità nel percorso
dell'antenato. Tutte le seguenti notazioni rappresentano la stessa chiave:
Specifica di entità base
Per un'entità principale, il percorso dell'antenato è vuoto e la chiave è costituita unicamente dal tipo e dall'identificatore dell'entità.
Specifica di un'entità con predecessori
Per inserire un nuovo messaggio con le chiavi principali
Per le chiavi create con un elemento padre, il metodo parent()
restituisce una chiave
che rappresentano l'entità padre:
Utilizzo degli ID dei tasti numerici
Puoi creare un'entità senza specificare un ID, in questo caso il datastore genera automaticamente un ID numerico. Se scegli di specificare alcuni ID e poi lascia che Datastore ne generi automaticamente alcuni, potresti violare il requisito delle chiavi univoche. Per evitare che ciò accada, riserva un intervallo di numeri da utilizzare per scegliere gli ID o utilizzare gli ID delle stringhe per evitare del tutto il problema.
Per prenotare un intervallo di ID, utilizza la classe del modello
allocate_ids()
Metodo della classe:
- allo scopo di allocare un numero specifico di ID
- per allocare tutti gli ID fino a un determinato valore massimo.
ID allocazione
Per allocare 100 ID per una determinata classe di modello MyModel
:
Per allocare 100 ID per le entità con chiave principale p
:
I valori restituiti, first
e last
, sono gli ID primo e ultimo (inclusi) assegnati. Puoi utilizzarli per creare chiavi come segue:
È garantito che queste chiavi non siano state restituite in precedenza dai dati
generatore di ID interni dello store, né verranno restituiti da chiamate future al
generatore di ID interno. Tuttavia, il metodo allocate_ids()
non controlla se gli ID restituiti sono presenti nello spazio dati, ma interagisce solo con il generatore di ID.
Per allocare tutti gli ID fino a un determinato valore massimo:
Questo modulo garantisce che tutti gli ID minori o uguali a N
siano considerati assegnati. I valori restituiti, first
e last
, indicano l'intervallo di ID
riservati da questa operazione. Non è un errore tentare di prenotare ID già assegnati. In questo caso, first
indica il primo ID non ancora assegnato e last
è l'ultimo ID assegnato.