Как я повторяю этот запрос sqlalchemy?

Относительный новичок на python и даже более новый для sqlalchemy. У меня есть следующее:

Без подзапроса, когда я присоединяюсь к двум таблицам без подзапроса, каждая возвращаемая строка представляет собой по существу 2 объекта:

query = DBSession.query(Table1,Table2).outerjoin(Table2,Table1.id==Table2.id) for row in query: # returns (<myproject.models.Table1 object at 0x3ad2e50>,<myproject.models.Table2 object at 0x3ad2e50>) 

При подзапросе поведение изменяется:

 subquery = DBSession.query(Table1).order_by(Table1.d.desc()).subquery() query = DBSession.query(subquery,Table2).outerjoin(Table2,subquery.c.id==Table2.id).group_by(subquery.c.id) for row in query: # hoping for 2 objects (<myproject.models.Table1 object at 0x3ad2e50>,<myproject.models.Table2 object at 0x3ad2e50>) # receiving (1,'Dave Thomas',10001,<myproject.models.Table1 object at 0x3ad2e50>) 

Как я могу получить 2 объекта для моего подзапроса выше? Столбцы таблицы 1 могут меняться когда-нибудь, и поэтому я не знаю, какая позиция будет в кортеже.

благодаря!

Вы пытались использовать псевдоним для подзапроса?

Это будет трюк?

 subsubquery = DBSession.query(Table1).order_by(Table1.d.desc()).subquery() subquery = DBSession.query(subsubquery,Table2).outerjoin(Table2,subsubquery.c.id==Table2.id).group_by(subsubquery.c.id).subquery( with_labels = True ) query = DBSession.query(Table1,Table2).select_from( subquery )