2009-06-25 9 views
2

Ich habe eine Liste von Schlüsselnamen, die ich Bulk holen möchten (die Schlüsselnamen werden in einer StringListProperty an eine Entität angehängt). Mein allgemeiner Plan zu tun war:Schlägt Key.from_path den Datenspeicher?

usernames = userrefInstance.users # A collection of strings on another 
model. 
keys = [Key.from_path('User', key_name) for username in usernames] 
users = db.get(keys) 

Meine Fragen haben Key.from_path den Datenspeicher zu schlagen? Ich versuche, als schnell wie möglich zu sein, und wenn Key.from_path den Datenspeicher trifft, muss ich arbeiten eine andere Möglichkeit, eine Sammlung von Schlüsseln zu speichern - Ich möchte nicht das Key-Objekt in einer Liste als Eigenschaft speichern Ich biete auch Benutzer freundliche Abfragen über die StringListPopererties.

Antwort

3

Nach dem Graben und Fragen zu einer anderen Gruppe, es stellt sich heraus, dass:

Schlüssel werden vollständig von der App ID und dem Weg bestimmt, so gibt es keine Notwendigkeit, Zugriff den Datenspeicher für diese. - Nick Johnson

Oder Sie können auch eine Liste der db.Key

+2

Heißt das ich hier Kredit für die Antwort zu bekommen, auch? ;) –

+0

Sure - Setze eine Antwort ein, ich lösche diese und akzeptiere deine;) – Kinlan

0

Die Parameter, die Sie Key.from_path() passieren verwenden, um alle erforderlichen Informationen enthalten den eindeutigen Schlüssel zu bauen, so dass es keine Notwendigkeit, denn es ist der Hit Datenspeicher.

Jede Entität im Datastore verfügt über einen Schlüssel, der sie eindeutig identifiziert. Der Schlüssel besteht aus den folgenden Komponenten:

  1. Die Art der Einheit, die es für den Zweck der Datenspeicherabfragen
  2. eine Kennung für die einzelne Entität stuft, die entweder
    • ein Schlüssel sein kann, name string
    • eine ganze Zahl numerische ID
  3. ein optionaler Vorfahr Pfad die Entität in der Datenspeicherhierarchie Ortung

Quelle: https://developers.google.com/appengine/docs/python/datastore/entities