On Mar 17, 2011, at 11:05 AM, hoesley wrote: > Awesome, thank you much. It is correlated to the parent. The query- > enabled properties section looks interesting to me. Will there be a > significant performance difference between the two approaches? I want > this to be lazily evaluated, so that this information is never fetched > unless we actually request that attribute.
then the simplest approach is the query-enabled property. It is no more than having a method on your object that emits a SELECT statement when called upon. The value can also be cached on "self' once created the first time, if that's appropriate. > > On Mar 16, 3:44 pm, Michael Bayer <[email protected]> wrote: >> this kind of pattern is usually handled by column_property(), assuming you >> can correlate your subquery to the parent within the WHERE clause such that >> the return value is a scalar. >> >> Below if you really just wanted "the first row" you'd want to say >> "limit(1)". If you really want that exact same first row of the table >> every time, it would be better as just an additional method or descriptor on >> your OrderChain object, (or even if not) perhaps even as a class method if >> the value truly has no correlation to the identity of the parent (which >> seems unlikely). >> >> Two different strategies at: >> >> http://www.sqlalchemy.org/docs/orm/mapper_config.html#sql-expressions... >> >> http://www.sqlalchemy.org/docs/orm/relationships.html#building-query-...- >> specific to relationship(), but the same idea could be applied to columns >> too. >> >> On Mar 16, 2011, at 10:23 AM, hoesley wrote: >> >> >> >> >> >> >> >>> I am trying to create a property on a mapped class which basically >>> executes a subquery. Here is what I'm trying to do in non-working >>> pseudo code: >> >>> mapper(OrderChain, Table('order_chains', self.meta, >>> autoload=True), >>> properties={'entries': relation(OrderChainEntry, >>> order_by=Column('timestamp')), >>> 'first_cancel': >>> select(OrderChainEntry).filter('type'='new').first() >>> }) >> >>> Is something like this possible? Or what's the best way to approach >>> it? >> >>> Also, if I've mangled terminology and/or written something that makes >>> no sense, please let me know - I'm very new to this package! >> >>> Cheers, >>> Andrew >> >>> -- >>> 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 >>> athttp://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 [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. > -- 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.
