2010-02-17 4 views
6

J'essaie d'obtenir des données de la banque de données du moteur de l'application.App Engine, Python: comment filtrer les requêtes par ID?

requête Filtrage par 'titre' (ou tout autre bien) fonctionne:

obj = db.Query(PageModel).filter('title',title)[0] 

Mais la même chose avec ID - ne compte pas: Je pense

obj = db.Query(PageModel).filter('ID',page_id)[0] 

il y a quelque chose de spécial ID et clés dans le magasin de données, mais je ne peux pas trouver, comment mettre en œuvre l'obtention de données par ID.

+0

Demande plus d'informations. Le contexte? Quels sont ces attributs? –

Répondre

13

Essayez

obj = PageModel.get_by_id(page_id) 

à la place. Cela suppose que l'ID avec lequel vous travaillez est l'ID numérique d'une clé de magasin de données (par exemple, provient de quelque chose comme obj.key().id()) et non un champ d'identifiant arbitraire que vous avez ajouté à votre PageModel.

+0

http://code.google.com/appengine/docs/python/datastore/modelclass.html#Model_get_by_id – Ryan

2

Vous pouvez filtrer les données en utilisant la clé (s):

from google.appengine.ext.db import Key 
key = Key('bgakaWdyc3NlcnIPCxIJRmVlZEVudHJ5GAwM') 

# Match many 
PageModel.all().filter('__key__ IN ', [key]) 
# Match one 
PageModel.all().filter('__key__ = ', key) 

Cependant, la méthode get_by_id (id) est préférée lors de la récupération d'une entrée.

Questions connexes