Question

se demander si quelqu'un sait pourquoi à l'aide des curseurs avec GqlQuery ne semble pas fonctionner correctement.

Je suis en cours d'exécution ce qui suit.

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 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

Merci pour votre aide.

Était-ce utile?

La solution

Vous ne devriez pas utiliser une LIMIT dans votre requête, car cela ne retournera les 100 premiers résultats, et je suppose que vous voulez tous, mais de les traiter par lots de 100 à chaque fois.

Voici ce que je ferais (en fonction de votre code d'exemple):

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) 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top