Either of these works for the individual queries, but when combined in the
union() or union_all() the result is still that the literal from the first
query is used on all result rows
q1 = session.query(A.data.label('somedata'), literal('A').label('source'))
q2 = session.query(B.data.label('somedata'), literal('B').label('source'))
qry = q1.union(q2)
generates the SQL
SELECT anon_1.somestuff AS somestuff, ? AS source
FROM (SELECT a.data AS somestuff, ? AS source
FROM a UNION ALL SELECT b.data AS somestuff, ? AS source
FROM b) AS anon_1
with bind parameters
['A', 'A', 'B']
q1 = session.query(A.data.label('somedata'),
literal_column('\'A\'').label('source'))
q2 = session.query(B.data.label('somedata'),
literal_column('\'B\'').label('source'))
qry = q1.union(q2)
generates the SQL
SELECT anon_1.somestuff AS somestuff, 'A' AS source
FROM (SELECT a.data AS somestuff, 'A' AS source
FROM a UNION SELECT b.data AS somestuff, 'B' AS source
FROM b) AS anon_1
The correct code would be
SELECT anon_1.somestuff AS somestuff, anon_1.source AS source
etc.
--
Mike Conley
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---