Sqlalchemy SQL炼金术:迭代结果代理集时使用多个select语句

Sqlalchemy SQL炼金术:迭代结果代理集时使用多个select语句,sqlalchemy,Sqlalchemy,SQL alchemy为结果代理集中的每个模型对象创建一个唯一的SELECT FROM-id=idlookup,这似乎是无效的。这是预期的行为吗 我有: query = session.query(Model1, Model4).join(COMPLEX_JOIN_OVER_4_TABLES) results = query.all() for r in results: print(r.as_dict()) 其中,as_dict()是sql alchemy模型类的一种方法:

SQL alchemy为结果代理集中的每个模型对象创建一个唯一的
SELECT FROM-id=id
lookup,这似乎是无效的。这是预期的行为吗

我有:

query = session.query(Model1, Model4).join(COMPLEX_JOIN_OVER_4_TABLES)
results = query.all()

for r in results:
    print(r.as_dict())
其中,
as_dict()
是sql alchemy模型类的一种方法:

    def as_dict(self):
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}
我将
echo=True
传递到
create_engine()
以查看我正在执行大量SQL查询:

  • 我让复杂的连接
  • 然后,我为结果联接中的每个项生成多个select语句,由
    as_dict()
    方法触发

  • 我为什么要这么做?数据应该已经由联接返回。

    我尝试了跨三个不相关的表的简单联接,查询和迭代只生成一个
    SELECT
    。你能分享一个复制你描述的行为的方法吗?如果我在迭代开始之前有
    session.commit()
    ,就会发生这种情况。