0
我以爲我理解基於http://code.google.com/appengine/docs/python/datastore/queryclass.html的遊標和查詢的概念,但顯然它不是基於我在代碼中做什麼。幫助理解with_cursor和查詢
我有我的數據存儲310個項目,我想在它們之間迭代在100小批量:
query = Event.all()
query.order("__key__")
batch_size = 100;
# expecting this to return the 1st 100 of the 310 items
results = query.fetch(limit=batch_size)
logging.info("count 1: %d, results: %d" % (query.count(), len(results)))
# reports: count 1: 310, results: 100
for item in results:
print item # this will print items 1-100, which is expected
# Move to the next batch block
cursor = query.cursor();
query.with_cursor(cursor);
results = query.fetch(limit=batch_size)
logging.info("count 2: %d, results: %d" % (query.count(), len(results)))
# reports: count 2: 0, results: 0
# but was expecting to move to item 101
我怎麼能在100批次通過我所有的實體迭代? 'query.cursor()'
是否返回第一個batch_size結尾處的光標或該塊的起始位置?
我猜''.count()'搞亂了光標。在調用'.count()'之前嘗試獲取遊標。 (爲了免於尼克約翰遜抨擊我,我應該指出,你可能根本不想使用count())。 – geoffspear
我看到 - 使用len(結果)而不是count來表示整個數據集的結束。 –
我可以預測嗎? –