Michael, thank you for you reply, I expected you to mention from_self :) I know about it, it is a handy trick indeed But I deliberately don't use it, because this way I don't know how to mention a column which I want to filter on This is due to the fact, that it is calculated i.e. there is no table to refer to! I might resert to using literals("filter('avg_1>10')"), but 'd prefer to stay in the more ORM-style
суббота, 25 апреля 2015 г., 2:37:11 UTC+5 пользователь Michael Bayer написал: > > > > On 4/24/15 5:25 PM, Пайков Юрий wrote: > > > q = session.query(Recipe, func.avg(Recipe.field1).over(...)).join(...) > > I have a query which selects some mapped entity as well as other columns. > > I then refer to the name of that entity when working with the result of > the query: > for entry in q.all(): > recipe=entry.Recipe > .... > > Now, I want to add filtering by some calculated criteria to my query, and > so I wrap it in an additional query: > q = q.subquery(); > q = session.query(q).filter(q.c.avg_1 > 10 ) > > However, this way I can no longer access entry.Recipe! Is there a way to > make sqlalchemy adapt names? I tried aliased and select_entity_from, but no > luck :( > > > this is getting into less reliable stuff, but instead of subquery() -> > session.query(q), use the from_self() method. It's designed to work this > way, and your Recipe entity will be adapted into the subquery. > > I've observed that the vast majority of my users don't seem to get into > queries like these, so from_self() is not as popular (or widely tested) as > it should be, but it is at the base of a lot of widely used functions like > count() and subquery eager loading, so give it a try: > > > http://docs.sqlalchemy.org/en/rel_1_0/orm/query.html?highlight=from_self#sqlalchemy.orm.query.Query.from_self > > apparently it needs some documentation too :) > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+...@googlegroups.com <javascript:>. > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.