Hello again,

I wanna use cursors on my GAE 
queries: 
https://developers.google.com/appengine/docs/python/datastore/queries#Query_Cursors

i have attached a patch that adds an optional parameter "reusecursor" to 
select on GAE.  If True, and the query has a limitby, it indicates that 
db['_lastcursor'] will have the cursor (i didn't want to store it if you 
are not gonna use it because i'm not sure of the cost of getting that 
cursor).  If a reusecursor is a string that string will be passed to the 
GAE query as the cursor.  Note that you must use limitby on all queries 
that you want to return the cursor for, and that queries that use a cursor 
must have the exact same filters.  Keep in mind that limitby will be in 
relation to the cursor, so in most cases you want offset of 0.

my suggested patch is attached.  i welcome comments.

example:

def test3():
    cursor = request.vars.cursor or True

    #say the manu_item has about a hundred rows....
    rows = db(db.menu_item.id>0).select(reusecursor=cursor, limitby=(0,10))
    cursor = db['_lastcursor']
    next_link = A('next', _href=URL(r=request, vars={'cursor':cursor}))
    
    
    # Use generic HTML views
    response.generic_patterns = ['html']
    return dict(
        rows=rows,
        cursor=cursor,
        next_link = next_link)

thanks,

christian

Attachment: cursorpatch.out
Description: Binary data

Reply via email to