[英]Eager Inner Join in SQLAlchemy
我一定是个白痴,因为我不知道如何让 SQLAlchemy 执行一个简单的、非惰性的内部联接。 换句话说,在单个查询中返回所有结果。
我想运行的原始 SQL 查询是:
select
city.population,
state.name
from
city c inner join state s
on c.state_id = s.id
我正在使用的 SQLAlchemy 语句是:
session.query(City.population, State.name).all()
City 和 State 模型已经定义了关系,并且 SQLAlchemy 语句返回正确的值。 但它需要永远,因为它正在为记录集中每一行的第二个值执行单独的“延迟”加载。 FROM 语句很简单: FROM city, state
options(joinedload(something here))
我可能在这里有点偏离,但是您是否尝试过明确地传递连接条件?
q = session.query(City.population, State.name).join(State).all()
另外,假设您的目标是初始查询,您是否尝试过对sqlalchemy
语法进行一些调整以实际获得相同的语句?
print (q.statement)
最后, Query
类有一个方法enable_eagerloads()
。 从文档:
控制是否呈现急切连接和子查询。
当设置为 False 时,无论 joinload()、subqueryload() 选项或映射器级别的 lazy='joined'/lazy='subquery' 配置如何,返回的 Query 都不会呈现预先连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.