Datensätze zählen in GoogleApp Engine

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
0815pascal
User
Beiträge: 7
Registriert: Montag 26. Januar 2009, 15:28

Ist es richtig, dass es bei App Engine's Datastore keine Möglichkeit gibt zu zählen, wieviele Datensätze eine GQL-Abfrage beinhaltet?!
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Nun, du weisst ja, es sind maximal 1000. Daher würde ich mit `list(q)` (wenn `q` ein `GqlQuery`-Exemplar ist) einfach alles nehmen und die Länge der Liste prüfen. Oder du rufst `count()` auf. Beachte aber, dass dies eine neue Anfrage ist und es nicht sicher ist, dass du bei einer nachfolgenden Anfrage die selbe Anzahl an Objekten bekommst. Ein anderer Prozess könnte das ja zwischenzeitlich ändern. In beiden Fällen musst du sowieso mehrere Anfragen in einer Schleife stellen, um zu schauen, ob nach den ersten 1000 noch weitere 1000 kommen.

Am besten ist daher, die Länge explizit zu verwalten und bei dem neues Objekt hochzuzählen. Da so ein Zähler ein Nadelöhr und nicht parallelisierbar ist, sollte man bei Anwendungen, wo viel gezählt werden muss, spezielle parallelisierbare Zähler benutzen. Da gibt es irgendwo eine Doku zu.

Stefan
Antworten