获取NDB查询长度-在Google应用程序引擎上使用Python
在google app engine上使用NDB时,获取查询结果数量的好方法是什么? 试图这样做:获取NDB查询长度-在Google应用程序引擎上使用Python,python,google-app-engine,app-engine-ndb,Python,Google App Engine,App Engine Ndb,在google app engine上使用NDB时,获取查询结果数量的好方法是什么? 试图这样做: query = NDB_Model.query(NDB_Model.some_property == some_value) if len(query) > 0: # <-- this throws and exception entity = query[0] query=NDB\u Model.query(NDB\u Model.some\u属性==some\u值)
query = NDB_Model.query(NDB_Model.some_property == some_value)
if len(query) > 0: # <-- this throws and exception
entity = query[0]
query=NDB\u Model.query(NDB\u Model.some\u属性==some\u值)
如果len(query)>0:#看起来您只是想从查询中获取第一个实体。这就是为什么
从文档中:
返回第一个查询结果(如果有)(否则无)。这类似于调用q.fetch(1)并返回结果列表的第一项
更一般的形式是query.fetch(n)
,其中n
是要获取的最大实体数。它返回一个列表,因此您可以轻松地检查该列表。要获取ndb查询的结果计数,您只需使用:
非常感谢您的回复,在我发布此问题后不久,当我在文档中找到关于使用“fetch()”的部分时,我觉得自己很愚蠢。但我还是很高兴我问了,因为我会用“query.fetch(1)[0]”而不是更好的“query.get()”@ChrisDutrow:没问题!使用q.fetch(n)
时,请务必检查长度,因为fetch最多返回n
实体,但返回的实体可能较少。n
只是一个限制。@voithos使用NDB时获取查询结果数(仅计数)的好方法是什么?@Nijo:query.count(限制)
。
query = NDB_Model.query(NDB_Model.some_property == some_value)
entity = query.get()
if entity is not None:
# Do stuff
query = NDB_Model.query(NDB_Model.some_property == some_value)
if query.count() > 0:
entity = query[0]