子查询中的SqlAlchemy闭包

eno*_*mad 5 closures sqlalchemy subquery correlated-subquery

我搜索了很多主题并没有找到答案,或者问题太复杂了.好吧 这是我的第一个问题.这是SQL

SELECT  parent.*,
(
    SELECT  COUNT(*)
    FROM    child
    WHERE   parent.id = child.parent_id
)
FROM parent
Run Code Online (Sandbox Code Playgroud)

如何在sqlalchemy中执行此子句?

WHERE   ui.invited_by = u.id
Run Code Online (Sandbox Code Playgroud)

可以在收藏中复制吗?sql表达式?PS我知道它可以通过group_by来完成.但我需要通过子查询.

谢谢.

eno*_*mad 1

我在这里找到了非常棒的答案。但也太复杂了。首先我想告诉大家,sql 世界中的闭包是关联性的。

这不一样,但对我有帮助。

pparent = Parent.__table__.alias('pparent') # using table directly to alias.

subquery = s.query(count(Child.id)).join(pparent) # usual thing but use aliased table.

s.query(Parent, subquery.filter(Parent.id == pparent.id).correlate(Parent).as_scalar()) #magic
Run Code Online (Sandbox Code Playgroud)