On Aug 4, 2010, at 10:07 AM, Richard Kuesters wrote:

> hi all,
> 
> in a polymorphic query, after a 'print' command i realized that SA generates 
> some columns named 'anon_X', which can be helpful for me.
> 
> the question is:
> 
> 1. is it safe to use those anon_X columns to refine my query?
> --- regarding this, my concern is that once the polymorphic query is done by 
> SA, will it anytime change it's name, or anything else in future releases?

it's not.   When anonymous aliases are generated within the orm Query against 
some entity that you've given it explicitly, you use the column attributes on 
that entity to reference those columns, not strings.   Never use strings except 
for those that you've named explicitly, and at the same level as where you 
named it.

For example, you might use a string if you wanted to ORDER BY some expression 
that's named in the columns clause:

        q = sess.query(func.myfunction(...).label('bar')).order_by('bar')

However, once you nest "q" as a subquery, it gains a .c. collection, and now 
you use that .c. collection for all future references to 'bar':

        q = q.subquery()
        q2 = sess.query(MyEntity).join((q, q.c.bar==MyEntity.bar))

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

Reply via email to