在 Python 上的 Google App Engine 中按实体键名过滤

Posted

技术标签:

【中文标题】在 Python 上的 Google App Engine 中按实体键名过滤【英文标题】:Filtering by entity key name in Google App Engine on Python 【发布时间】:2011-02-02 10:14:49 【问题描述】:

在 Google App Engine 上使用 Python 查询数据存储,可以使用 GQL 或 Entity.all() 进行过滤。所以例如这些是等价的

gql = "SELECT * FROM User WHERE age >= 18"
db.GqlQuery(gql)

query = User.all()
query.filter("age >=", 18)

现在,还可以通过键名查询事物。我知道在 GQL 中你会这样做

gql = "SELECT * FROM User WHERE __key__ >= Key('User', 'abc')"
db.GqlQuery(gql)

但是你现在如何使用过滤器来做同样的事情呢?

query = User.all()
query.filter("__key__ >=", ?????)

【问题讨论】:

【参考方案1】:
from google.appengine.api.datastore import Key
query.filter("__key__ >=", Key.from_path('User', 'abc'))

【讨论】:

【参考方案2】:

对我来说,类似的方法有效,而“from_path”功能在我的情况下不起作用,这个方法有效:

from google.appengine.api.datastore import Key

key = Key(your_string_with_key)
query.filter("__key__ = ", key)

【讨论】:

以上是关于在 Python 上的 Google App Engine 中按实体键名过滤的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 上的 python 请求不适用于 HTTPS

Google Web Toolkit (GWT) rpc 到 Google App Engine (GAE) 上的 Python 服务器

Google App Engine 上的错误 Python 2.7 - 无法使用 CGI 处理程序启用线程安全

Google App Engine 上的 Production App 突然无法访问 Google Cloud Storage

Python 3.7 上的 Flask 比具有 Google App Engine 标准环境的 Python 2.7 上的 webapp2 要求更高(也更昂贵)

Google-App-Engine 上的 Grails - 它死了吗? [关闭]