在谷歌AppEngine上,您可以通过查询像GQL获得ID字段
select __key__ from furniture
检索散列键值但AppEngine上的数据存储保持一个很好的自动递增场ID为每一种。
如何从查询访问它?
select ID from furniture
不工作
在谷歌AppEngine上,您可以通过查询像GQL获得ID字段
select __key__ from furniture
检索散列键值但AppEngine上的数据存储保持一个很好的自动递增场ID为每一种。
如何从查询访问它?
select ID from furniture
不工作
我相信GCL查询不能包含调用存取方法或属性提取(多,在同样的事实,它只能做"SELECT * FROM"
获取整个实体或"SELECT __key__ FROM"
只取钥匙 - 它不能挑选领域,如[假设! - )] "SELECT this, that FROM
“)
所以,你需要获取密钥,然后调用每个键的.id()
访问(如果您想None
钥匙。没有ID而是名称;使用.id_or_name()
如果您希望获得该名称(如果可用),并且None
仅作为最后的手段)。例如,要得到唯一的非无标识:
thekeys = db.GqlQuery('SELECT __key__ FROM Whatever').fetch(1000)
theids = [k.id() for k in thekeys if k.id() is not None]
绝对正确,除了条件应该是“如果k.has_id()” - 或者省略它并使用“k.id_or_name()”。 –
@尼克,谢谢! 'has_id'没有记录在http://code.google.com/appengine/docs/python/datastore/keyclass.html,所以我不愿意使用它或建议其他人使用它 - 如果这是一个文档错误,当然,我会很乐意在跟踪器中打开它并且/或者帮助它适应20%的时间;-)。 –
,你也可以尝试
entity.key().id()
它的作品完美的分类和甜美sloution感谢很多.. –
我不知道它在那里回来然后当你问这个问题,但现在它是相当很容易通过id检索实体。
YourModel.get_by_id (int(ids))
您可以在文档中阅读更多关于它在这里:https://developers.google.com/appengine/docs/python/datastore/modelclass#Model_get_by_id
的ID是不是“自动增量”。他们保证在单一类型和实体群体中是唯一的,但他们不可能是连续的,也不能保证会增加。 (在开发服务器上,它们是连续的)。 – geoffspear