You need sort by key:
keys = db.GqlQuery("SELECT __key__ FROM mymodel ORDER BY __key__").fetch(300)
keys = db.GqlQuery("SELECT __key__ FROM mymodel WHERE __key__ > :1
ORDER BY __key__", entities[-1]).fetch(300)

2009/11/15 bsb <[email protected]>:
> To add to that, I tried to use the download_data tool to get a csv
> dump of my datastore entities. It runs fine, until eventually it hits
> this:
>
> [ERROR   ] [Thread-11] ExportProgressThread:
> Traceback (most recent call last):
>  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
> GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
> google/appengine/tools/bulkloader.py", line 1385, in run
>    self.PerformWork()
>  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
> GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
> google/appengine/tools/bulkloader.py", line 2127, in PerformWork
>    item.progress_key = self.db.StoreKeys(item.key_start,
> item.key_end)
>  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
> GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
> google/appengine/tools/bulkloader.py", line 1926, in StoreKeys
>    repr(key_start), repr(key_end))
> AssertionError: datastore_types.Key.from_path(u'Model_mobileapp',
> u'286532250', _app_id_namespace=u'appcaddylive') not less than
> datastore_types.Key.from_path(u'Model_mobileapp', u'284152154',
> _app_id_namespace=u'appcaddylive')
>
> so, something seems a bit broken there. If it helps, I have the
> following indexes defined for Model_mobileapp:
>
> indexes:
> - kind: Model_mobileapp
>  properties:
>  - name: __key__
>    direction: desc
>
> Because the bulkloader used to complain that it needs a descending
> index on key for parallel downloads.
>
> On Nov 15, 3:28 pm, bsb <[email protected]> wrote:
>> Just to say, the following query gives me the correct result:
>>
>> entities = mymodel.all().order('myId').fetch(300)
>> keys = {}
>> while entities:
>>     for obj in entities:
>>         if obj.myId in keys.keys():
>>             keys[obj.myId] = keys[obj.myId] + 1
>>         else:
>>             keys[obj.myId] = 1
>>     entities = mymodel.all().order('myId').filter('myId >', entities
>> [-1].myId).fetch(300)
>>
>> So why does the key-based query not work?
>>
>> On Nov 15, 3:08 pm, bsb <[email protected]> wrote:
>>
>>
>>
>> > I have the following code:
>>
>> > entities = db.GqlQuery("SELECT __key__ FROM mymodel").fetch(300)
>> > keys = {}
>> > while entities:
>> >     for key in entities:
>> >         if key in keys.keys():
>> >             keys[key] = keys[key] + 1
>> >         else:
>> >             keys[key] = 1
>> >     entities = db.GqlQuery("SELECT __key__ FROM mymodel WHERE __key__
>>
>> > > :1", entities[-1]).fetch(300)
>>
>> > Now, the thing that I don't get is that when I look at the "keys"
>> > dictionary above, I get something like that:
>>
>> > agxhcHBjYWRkeWxpdmVyHgsSD01vZGVsX21vYmlsZWFwcCIJMzM4Njk0OTU0DA  128
>> > agxhcHBjYWRkeWxpdmVyHgsSD01vZGVsX21vYmlsZWFwcCIJMzM4NzI2NTg4DA  139
>> > agxhcHBjYWRkeWxpdmVyHgsSD01vZGVsX21vYmlsZWFwcCIJMjg0OTQ4OTg1DA  1
>>
>> > ie. some keys are fetched multiple times from the db? How is that
>> > possible? I must be making a simple mistake, but I don't find it. I
>> > read that all queries without exlicit ordering are ordered by __key__
>> > asc by default, so that shouldn't be the problem. What's wrong with my
>> > logic here?!
>>
>> > I should say that all mymodel objects are created with
>>
>> > obj = mymodel( key_name = 'some_unique_id', [...] )
>>
>> > if that's of any significance.
>>
>> > Thanks in advance,
>> > Benjamin
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/google-appengine?hl=.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=.


Reply via email to