开发者

GQLQuery with_cursor not working

开发者 https://www.devze.com 2023-01-28 18:20 出处:网络
wondering if anyone knows why using cursors with GQLQuery doesn\'t seem to be working properly. I\'m running the following.

wondering if anyone knows why using cursors with GQLQuery doesn't seem to be working properly.

I'm running the following.

query = "SELECT * FROM myTable WHERE accountId = 'agdwMnBtZXNochALEglTTkFjY291bnQYpQEM' and lastUpdated > DATETIME('0001-01-01 00:00:00') ORDER BY lastUpdated ASC LIMIT 100"

if lastCursor:    
    dataLookup = GqlQuery(query).with_cursor(lastCursor)
else
    dataLookup = GqlQuery(query)

//dataLookup.count() here returns 开发者_StackOverflow中文版some value like 350

for dataItem in dataLookup:    
  ... do processing ...

myCursor = dataLookup.cursor()

dataLookup2 = GqlQuery(query).with_cursor(myCursor)

//dataLookup2.count() now returns 0, even though previously it indicates many more batches can be returned

Thanks for all your help.


You should not use a LIMIT in your query, as that will only return the first 100 results, and I assume you want all of them, but process them in batches of 100 each time.

Here's what I would do (based on your example code):

query = GqlQuery("SELECT * FROM myTable WHERE accountId = 
  'agdwMnBtZXNochALEglTTkFjY291bnQYpQEM' and 
  lastUpdated > DATETIME('0001-01-01 00:00:00') ORDER BY lastUpdated ASC")

dataLookup = query.fetch(100) # get first 100 results

for dataItem in dataLookup:
  # do processing

myCursor = query.cursor() # returns last entry of previous fetch

if myCursor:
  # get next 100 results
  dataLookup2 = query.with_cursor(myCursor).fetch(100) 
0

精彩评论

暂无评论...
验证码 换一张
取 消