GQL 获取 ID 字段
在谷歌的App Engine上,你可以通过查询来获取哈希键的值,像这样:
select __key__ from furniture
不过,App Engine的数据存储会为每种类型自动维护一个自增的ID字段。
我该如何从查询中访问这个ID呢?
select ID from furniture
这个方法不行。
3 个回答
0
我不确定你问这个问题的时候是否已经有这个功能,但现在通过ID获取实体变得很简单。
YourModel.get_by_id (int(ids))
你可以在这里查看更详细的说明:https://developers.google.com/appengine/docs/python/datastore/modelclass#Model_get_by_id
5
你也可以试试
entity.key().id()
4
我认为Gcl查询不能直接使用访问器方法或者提取属性(就像它只能用 "SELECT * FROM"
来获取整个实体,或者用 "SELECT __key__ FROM"
只获取键一样——它不能像[假设的!-] "SELECT this, that FROM"
那样选择特定的字段)。
所以,你需要先获取键,然后对每个键调用 .id()
方法(如果你想要那些没有ID而是名字的键返回 None
;如果你想优先获取名字,可以用 .id_or_name()
,这样如果有名字就返回名字,没有的话才返回 None
)。例如,如果你只想获取非空的ID:
thekeys = db.GqlQuery('SELECT __key__ FROM Whatever').fetch(1000)
theids = [k.id() for k in thekeys if k.id() is not None]