2010-03-18 7 views
0

Je souhaite ignorer certaines requêtes fréquentes en stockant str(key) dans memcache. Quand je reçois le encoded_key de memcached, je peux reconstruire la clé avec Key(encoded=encoded_key).Récupère le contexte modèle d'un objet clé dans le magasin de données (App Engine)

Mais comment puis-je interroger l'objet réel à partir de la clé? Une possibilité serait d'utiliser

GqlQuery('SELECT * FROM ' + Key(encoded_key).kind() + \ 
    ' WHERE __key__ = ' + encoded_key) 

mais je préfère ne pas utiliser GQL si possible. Y at-il un moyen d'obtenir l'objet sans utiliser GQL?

+1

En guise de remarque, la construction de requêtes GQL comme celle-ci est une très mauvaise idée. Les paramètres (: 1,: 2, etc.) sont fournis pour éviter le besoin de faire cela. –

+0

Merci Nick. Je sais, c'est juste du code standard, je ne voulais pas utiliser GQL en premier lieu. –

Répondre

3

Etes-vous en train de stocker le résultat de str(key) dans memcached? Si oui, quand vous le récupérez, vous devriez pouvoir faire db.get(key) pour obtenir l'entité vers laquelle il pointe.

db.get() prendra un objet db.Key ou la représentation sous forme de chaîne d'un objet db.Key (ou une liste de clés ou de chaînes de clé).

+0

Yay, merci! J'ai dû manquer cette information utile en lisant les documents de l'API. –

Questions connexes