2012-08-31 101 views
5

在Google應用引擎上使用NDB時,獲取查詢結果數量的好方法是什麼?獲取NDB查詢長度 - 在Google App Engine上使用Python

嘗試這樣的:

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

我很抱歉,這可能是一個很簡單的問題,但它會從docs是我不清楚。

回答

11

看起來你只是想從你的查詢中得到第一個實體。這就是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()

+0

非常感謝您的回覆,我覺得自己很笨,當我發現有關的文檔使用「獲取()」部分在我發佈這個問題後不久。但我仍然很高興我問,因爲會做「query.fetch(1)[0]」,而不是更好的「query.get()」 –

+1

@ChrisDutrow:沒問題!當你使用'q.fetch(n)'時,一定要檢查長度,因爲讀取返回_up to_'n'實體,但是它可以返回更少。 'n'只是一個限制。 – voithos

+0

@voithos **在使用NDB時,獲取查詢結果數量的好方法是什麼(僅限計數)?**。 –

3

要獲得NDB查詢的結果數,您可以簡單地使用count()

query = NDB_Model.query(NDB_Model.some_property == some_value) 
if query.count() > 0: 
    entity = query[0] 
相關問題