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.

Reply via email to