len(db(query).select()) - is bad solution, since it loads all records into memory + parsing/transforming into pydal records
пятница, 21 августа 2020 г. в 03:35:33 UTC+3, Jim S: > Thanks, I'll check that out too. Might be more efficient than the other > alternative. > > -Jim > > > On Thursday, August 20, 2020 at 7:28:26 PM UTC-5, [email protected] wrote: >> >> u_cnt = db.auth_user.id.count().with_alias('user_count') >> user_count = db(db.auth_user).select(u_cnt, left = >> ...).first().user_count >> >> or just passing raw SQL as field: >> user_count = db(db.auth_user).select('count(id) AS user_count', left = >> ...).first().user_count >> >> >> >> >> четверг, 20 августа 2020 г. в 22:27:04 UTC+3, Jim S: >> >>> Clemens >>> >>> Thanks so much, that worked perfect. I guess I was a little concerned >>> about the performance, doing the whole select, but then realized that this >>> should cut down on result set size, so shouldn't matter that much. >>> >>> Again, thank you >>> >>> -Jim >>> >>> >>> On Thursday, August 20, 2020 at 2:14:26 PM UTC-5, Clemens wrote: >>>> >>>> Hi Jim, >>>> >>>> I had this issue some time ago and I solved it by the workaround of >>>> using len(db(query).select()). The count()-method is a little more >>>> performant, but in my case it didn't matter. If you need the rows object >>>> of >>>> the select for further processing anyway, you can have the len() on the >>>> rows object. >>>> >>>> It's not perfect, but it works :-) >>>> >>>> Best regards >>>> Clemens >>>> >>>> On Thursday, August 20, 2020 at 8:52:15 PM UTC+2 Jim S wrote: >>>> >>>>> Hi >>>>> >>>>> I'm trying to get the count of records to be returned in a query using: >>>>> >>>>> db(query).count() >>>>> >>>>> Adding complexity to the situation is that query may sometimes be over >>>>> multiple tables with need a left clause added. When selecting records >>>>> you >>>>> do this by passing the left= parameter inside the .select(). >>>>> >>>>> But, you can't pass anything into the .count() method. >>>>> >>>>> Has anyone found an efficient way to get a .count() when a left join >>>>> is in use? >>>>> >>>>> -Jim >>>>> >>>>> (cross-posting to py4web as well) >>>>> >>>>> -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/ac06edd8-4ccf-4866-b327-3277abb6ec42n%40googlegroups.com.

