Friday, October 16, 2009

Google AppEngine: How to fetch more than 1000 entities?


def fetch_all(query, max_entries=1000):
''' fetch all entities '''
entries = []

count = 0
query = query.order('__key__')
while count % max_entries == 0:
items = query.fetch(max_entries)
for i, item in enumerate(items):
entry = {}
entry['gae_key'] = str(item.key())
for field in item.fields(): entry[field] = getattr(item, field)
entries.append(entry)

current_count = len(items)
count += current_count

if current_count == max_entries:
last_key = query.fetch(1, max_entries-1)[0].key()
query = query.filter('__key__ > ', last_key)
return entries

0 comments:

Post a Comment