我有两个模型Employee和UnionEmployees。
我可以像这样基于employeeid加入两者:

query = session.query(Employee,UnionEmployees)\
.filter(Employee.employeeid==UnionEmployees.employeeid)\
.filter_by(union_status='active')


使用statement.compile深入了解SQL

sql = str(query.statement.compile(dialect=mysql.dialect()))


我看到选择语句看起来像这样:

select Employee.employeeid, Employee.first_name....UnionEmployee.employeeId, UnionEmployee.first_name...
...
from Employee join UnionEmployee
on Employee.employeeid = UnionEmployee.employeeid
where UnionEmployee.union_status = 'active'


有没有一种方法可以更改查询,以便从其编译的sql语句仅对单个实体(而不是对两个实体)执行选择?如果我确定只希望来自一个实体的用户,我希望避免获取冗余数据。

最佳答案

只需使用显式连接:

query(Employee).join(UnionEmployees, Employee.employeeid == UnionEmployee.employeeid).filter(...)

关于python - SqlAlchemy使用带有连接的查询,如何仅从一个实体获取列而不是从两个实体获取列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41817747/

10-09 15:05