GQL 获取 ID 字段

3 投票
3 回答
3757 浏览
提问于 2025-04-15 14:17

在谷歌的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]

撰写回答