On Wed, Oct 19, 2011 at 7:57 PM, Michael Bayer <mike...@zzzcomputing.com>wrote:
> > On Oct 19, 2011, at 11:44 AM, lestat wrote: > > > > > and use it: > > hierarchy_mapper = HierarchyMapper(model_class, model_class.__table__, > > non_primary=True) > > result = > > db.session.query(hierarchy_mapper).from_statement(hie_statement) > > > > where hie_statement is RAW SQL. > > > > but I can't add options contains_eager like > > result = result.options(contains_eager(Comment.user)) > > Well no because you're digging way into RECURSIVE queries which SQLA > doesn't yet support very nicely. Mapping to them is not a problem that's > been cleanly solved. > > There's some sketches of how to get "with recursive" to work with mappings > in such a way that the "recursive" thing is contained within a subquery, you > can play with that here: > > http://www.sqlalchemy.org/trac/attachment/ticket/1859/cte_demo.py > > Thanks, I play with this code. > > it print error: > > ArgumentError: Can't find property 'user' on any entity specified in > > this Query. Note the full path from root (Mapper|Comment|comment|non- > > primary) to target entity must be specified. > > because it non_primary mapper. > > > > How I can solve this problem? > > The problem of mapping to CTEs is not a problem that's solved right now. > It wouldn't be via subclassing Mapper, though, the code you've pasted there > looks most like Mapper so its not clear what portions you've attempted to > redefine. I add only 3 strings of code, because I don't know how redefine only populate_state without copying all _instance_processor code: def populate_state(state, dict_, row, isnew, only_load_props): ### ADDED begin # adds level to objects row_tuple = tuple(row) level = row_tuple[-3] dict_['level'] = level ### ADDED end > if there are areas of mapper loading that could be made more flexible in > some way that's definitely useful, we can look into those. > > -- > 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.