GqlQuery with_cursor ne fonctionne pas
-
30-09-2019 - |
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.
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