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