Sqlalchemy SQL炼金术:迭代结果代理集时使用多个select语句
SQL alchemy为结果代理集中的每个模型对象创建一个唯一的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模型类的一种方法:
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查询:
as_dict()
方法触发我为什么要这么做?数据应该已经由联接返回。我尝试了跨三个不相关的表的简单联接,查询和迭代只生成一个
SELECT
。你能分享一个复制你描述的行为的方法吗?如果我在迭代开始之前有session.commit()
,就会发生这种情况。