Cool!

That is what I was looking for.

Thank you,

Ladislav Lenart


On 24.10.2012 20:00, Michael Bayer wrote:
> with_entities() will give you this:
> 
> http://docs.sqlalchemy.org/en/rel_0_7/orm/query.html#sqlalchemy.orm.query.Query.with_entities
> 
> 
> On Oct 24, 2012, at 11:21 AM, Ladislav Lenart wrote:
> 
>> Oh, you are right of course. This works, however I would still like to 
>> transform
>> the query programmatically (mainly out of curiosity) from
>>
>>>>    q = session.query(Person).order_by(Person.name)
>>>>    q = q.filter(Person.age > age)
>>>>    return q
>>
>> to
>>
>>>>    q = session.query(func.count(Person.id))
>>>>    q = q.filter(Person.age > age)
>>>>    return q
>>
>> (I am not sure if the order_by part can remain or not.)
>>
>> Is this possible somehow? I am pretty sure I read something along these lines
>> but cannot find it anywhere.
>>
>>
>> Ladislav Lenart
>>
>>
>> On 24.10.2012 17:10, Simon King wrote:
>>> On Wed, Oct 24, 2012 at 3:59 PM, Ladislav Lenart <lenart...@volny.cz> wrote:
>>>> Hello.
>>>>
>>>> Suppose I have the following query:
>>>>
>>>> def people_older_than(age):
>>>>    q = session.query(Person).order_by(Person.name)
>>>>    q = q.filter(Person.age > age)
>>>>    return q
>>>>
>>>> It returns a subset of Person instances. How can I augment the query so it
>>>> returns only their count? I.e.:
>>>>
>>>> def number_of_people_older_than(age)
>>>>    q = people_older_than(21)
>>>>    q_count = q    # Apply some magic here.
>>>>    return q_count.scalar()
>>>>
>>>>
>>>> Thank you in advance,
>>>>
>>>> Ladislav Lenart
>>>>
>>>
>>> I don't think any magic is required. Does this work for you:
>>>
>>> def number_of_people_older_than(age)
>>>    q = people_older_than(age)
>>>    return q.count()
>>>
>>> See also http://docs.sqlalchemy.org/en/rel_0_7/orm/tutorial.html#counting
>>>
>>> Simon
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To post to this group, send email to sqlalchemy@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> sqlalchemy+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/sqlalchemy?hl=en.
>>
> 


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to