Only a couple of months late, but here is the final working recipe: class A(Base): __tablename__ = 'tbl_a' id = Column(Integer, primary_key=True) data = Column(String)
class B(Base): __tablename__ = 'tbl_b' id = Column(Integer, primary_key=True) data = Column(String) meta.create_all() session.add(A(data='a1')) session.add(B(data='b1')) session.commit() q1 = session.query(A.data.label('somedata'), literal_column("'A'").label('source')) q2 = session.query(B.data.label('somedata'), literal_column("'B'").label('source')) subq = session.query().from_statement(union_all(q1,q2)).subquery() query = session.query(subq) for row in query: print row.source, row.somedata generated SQL is: SELECT anon_1.somedata AS anon_1_somedata, anon_1.source AS anon_1_source FROM (SELECT tbl_a.data AS somedata, 'A' AS source FROM tbl_a UNION ALL SELECT tbl_b.data AS somedata, 'B' AS source FROM tbl_b) AS anon_1 Not sure if using the subquery will cause inefficient SQL, but that would take some research looking at query plans and might vary by database engine. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---