Thanks for exploring this Anthony, Yes, I guess having .limit() and .offset() would make it easier to use constant limit value like 10 records and just manipulate the offset...
I was just at first thinking that limitby=(limit, offset) or limitby=(offset, limit), I mean I intuitivelly want it to be like that, even if I had use limitby in the past, I use it for get last record for instance and never think about it much, I did just find how I can get the last result, and I was find with that, but now I am trying to feed an infinite scroll select html input and were needing to ajax get 10-20 records at a time to do so, and I at first was confused by limitby until I step back... What confuse me the most at first was that my limitby parameters was alterated when I pass (10, 0) for instance to get the first 10 record (think limit, offset here) and get select with limit -10 and offset 10 or something like that... Anyway thanks for being so helpful. Richard On Tue, Mar 7, 2017 at 10:29 AM, Anthony <abasta...@gmail.com> wrote: > For what it's worth, the Django ORM uses Python array slicing syntax > (i.e., [start:stop]) to implement limit/offset, and SQLAlchemy uses > .slice(start, stop) (though it also offers separate .limit() and .offset() > methods). I don't think it is common to have a single argument of the form > (limit, offset). > > Anthony > > > On Tuesday, March 7, 2017 at 10:22:25 AM UTC-5, Anthony wrote: >> >> On Tuesday, March 7, 2017 at 9:20:53 AM UTC-5, Richard wrote: >>> >>> Yes sorry it was more of a complaint than a question >>> >>> :) >>> >>> I was disturbed by the fact that I can't leave the limit constant, like >>> 10 rows, and only manipulate the offset as I would do in sql... >>> >> >> It sounds like you want something like: >> >> LIMIT = 10 >> offset = request.vars.offset >> rows = db(query).select(..., limitby=(LIMIT, offset)) >> >> But that isn't really much simpler than the actual DAL API, which is: >> >> rows = db(query).select(..., limitby=(offset, offset + LIMIT)) >> >> What is the big difficulty with the above? >> >> I'm not sure why the DAL uses (min, max) rather than (limit, offset), but >> I suspect the reason is that (min, max) is clearer when combining both >> values into a single parameter using a tuple. With a single tuple of >> values, it is natural for the first to be the min and the second the max, >> but the ordering of limit and offset would be somewhat arbitrary and open >> to confusion. If we wanted the API to accept a limit and an offset, it >> would probably be more clear to make those separate arguments. >> >> Anyway, if it really bothers you, you can define a simple function: >> >> def mylim(limit, offset): >> return (offset, offset + limit) >> >> and use: >> >> limitby=mylim(limit, offset) >> >> Anthony >> > -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.