You can do something like:

   q1 = session.query(\
              ContactInfo.account_id.label("q1_account_id" ),
              ContactInfo.other_id.label("q1_otherid" )
          )\
         .filter(..)
   q2 = session.quiery(Site.account_id.label("q2_account_id")).filter(..)
   _q3 = sqlalchemy.union( q1 , q2 )
   q3 = sqlalchemy.sql.expression.alias( _q3 , name="unioned")

   q = sqlalchemy.select(\
              (\
                  q3.c.q1_account_id.label('contact_account_id') , 
                  q3.c.q2_account_id.label('site_account_id') ) ,
              ),
          )\
          .filter()\
          .order_by()

    results = dbSession.execute( q )


the thing to note on this approach ( which works great ) is that you can no 
longer use .all()

if you conditionally generate the joins...


        if isinstance( _query , sqlalchemy.orm.query.Query ):
            results = _query.all()
        else:
            results = dbSession.execute( _query )

hope that helps!

there are probably other ways to do it, but this approach works for me

-- 
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/groups/opt_out.

Reply via email to