通过Key检索GAE数据

时间:2013-09-02 16:24:10

标签: python google-app-engine

我是python&的新手谷歌应用程序引擎所以这将是一个基本问题,但我无法在其他地方找到答案...

我正在尝试通过将密钥(由GAE生成)从HTML页面传递回python来检索记录。

我的HTML电话是

<a href="/playerprofile?uid=ahRkZXZ-Y293YnJpZGdlYm9va2luZ3IWCxIGTWVtYmVyIgpKb2huIEpvbmVzDA">John Jones</a>

然后我试图将它从表中拉出来

uid = self.request.get('uid')
m = Member.all().filter('Key = ',uid)

它不会检索任何内容。我该怎么做?

2 个答案:

答案 0 :(得分:2)

你不能这样做。密钥以urlsafe形式编码

您应该使用Key(encoded=None)

从编码密钥构造密钥
k = Key(uid)
m = Member.get(k)

密钥https://developers.google.com/appengine/docs/python/datastore/keyclass上的文档

然而,鉴于您是appengine的新手,您不应该使用 db 。您应该开始使用 ndb 作为数据存储区api,因为这是谷歌的开发投资所在。

如果您在此方案中使用ndb,则可以使用以下

m = Key(urlsafe=uid).get()

答案 1 :(得分:0)

我会改用Model.get_by_key_name()

uid = self.request.get('uid')
m = Member.get_by_key_name(uid)

以下是App Engine documentation上有关它的更多信息。