python的相对新手,甚至sqlalchemy的新手。我有以下内容:
没有子查询,当我加入 2 个没有子查询的表时,返回的每一行本质上是 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 个对象?Table1 的列可能有一天会改变,因此我不知道元组中的位置。
谢谢!