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.

Reply via email to