5

在谷歌应用引擎上使用 NDB 时获取查询结果数量的好方法是什么?

尝试了这个:

query = NDB_Model.query(NDB_Model.some_property == some_value)
if len(query) > 0:    # <-- this throws and exception
    entity = query[0]

很抱歉,这可能是一个非常简单的问题,但从文档中我并不清楚。

4

2 回答 2

12

您似乎只想从查询中获取第一个实体。这query.get()就是为了。

query = NDB_Model.query(NDB_Model.some_property == some_value)

entity = query.get()
if entity is not None:
    # Do stuff

从文档:

返回第一个查询结果(如果有)(否则为无)。这类似于调用 q.fetch(1) 并返回结果列表的第一项。

在更一般的形式中,要获取的最大实体数query.fetch(n)在哪里。n它返回一个列表,因此您可以轻松地检查len()它。

于 2012-08-31T18:26:27.250 回答
3

要获取 ndb 查询的结果计数,您可以简单地使用count()

query = NDB_Model.query(NDB_Model.some_property == some_value)
if query.count() > 0:
    entity = query[0]
于 2014-04-20T18:48:57.610 回答