在SQL-Alchemy中选择父数据和子计数

时间:2016-02-10 05:17:00

标签: python sql sqlalchemy flask-sqlalchemy

我有父表和子表。这是一对多的关系:父母可以有很多孩子,孩子只能有一个孩子。

我试图在SQLAlchemy中创建一个查询,它会给我所有的父母'数据,加上他们的孩子数。

到目前为止,我有这个:

db.session.query(func.count(models.Child.id), models.Parent)\
  .select_from(models.Parent).join(models.Child).group_by(models.Parent.id)

这将生成如下SQL:

SELECT count(child.id) AS count_1, parent.id AS parent_id, parent.name AS parent_name
FROM parent 
INNER JOIN child ON parent.id = child.parent_id

这给了我想要的结果,,除非父母没有孩子。然后从结果中完全省略该父项,而期望的结果是具有其id,name和0计数的行。

1 个答案:

答案 0 :(得分:1)

这称为外连接。

在SQLAlchemy中,使用outerjoin方法代替join,您将获得所需的结果。