我知道以下方法可以通过不同的方式实现,但我正在寻找一种在SQLAlchemy中使用select语句作为列的特定方法。
示例查询是:
SELECT employee.*, (
SELECT avg(salary)
FROM employee as e1
WHERE e1.department_id = e2.department_id
) as avg_salary
FROM employee as e2
我只使用SQLAlchemy中的Core组件。这是我到目前为止所得到的:
e1 = employee.alias('e1')
e2 = employee.alias('e2')
inner = select(
columns=[func.mean(e1.salary).label('avg_salary')],
from_obj=e1
whereclause=e1.department_id == e2.department_id
)
outer = select(
columns=[e2, inner.avg_salary],
from_obj=e2
)
但是,这个(outer
)会产生SELECT ... from employee as e1, (select ...) as e2
,而不是我想要的查询。
如何使用SQLAlchemy核心来获取SQL查询?