I have a query where I derive an object based on some dynamic filters on a relationship:
sql_ors = [ sqlalchemy.func.lower(Bar.string_id) == id_search.lower(), sqlalchemy.func.lower(Bar.numeric_id) == id_search.lower(), ] query = dbSession.query(Foo)\ .join(Bar, Foo.bar_id == Bar.id )\ .filter( Foo.bash.op('IS')(True), sqlalchemy.sql.expression.or_(*sql_ors), ) This generally works fine. Because of how the app stores data, I need to expand this query in the following way: 1. I need to join another instance of Bar onto the query 2. I need to filter against that instance of Bar After reading the docs, I was hoping something like this would work -- it did not, but I'm sharing this to explain the actions I was trying to accomplish _aliased = sqlalchemy.orm.alias(Bar, name='bar2') sql_ors.extend([ sqlalchemy.func.lower(_aliased.string_id) == id_search.lower(), sqlalchemy.func.lower(_aliased.numeric_id) == id_search.lower(), ]) query = query.join(_aliased, Foo.bar_id == _aliased.id) A better query would handle this entire section with some CASE clauses, but I'm hoping to just patch in the right functionality for a bit without rewriting too much. Anyone have a clue which ORM api elements I should be using? -- 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.