我正在尝试计算各自类别中的项目数,最后得到一个我可以在jinja模板中迭代的集合。我的最终输出是这样的:
category1,5
category2,10
category3,0
零项目案例非常重要。
我的模特是:
class Category(Base):
__tablename__ = 'category'
id = Column(Integer, primary_key=True)
name = Column(String(80), unique=True)
user_id = Column(Integer, ForeignKey('user.id'))
user = relationship(User)
class Item(Base):
__tablename__ = 'item'
id = Column(Integer, primary_key=True)
name = Column(String(80))
description = Column(String(500))
category_id = Column(Integer, ForeignKey('category.id'))
category = relationship(Category)
user_id = Column(Integer, ForeignKey('user.id'))
user = relationship(User)
date_added = Column(DateTime, default=datetime.datetime.now)
我一直指向Stackoverflow: Counting relationships in SQLAlchemy的方向,这引导我进行查询
count_categories = db_session.query(Category.name, func.count(Item.id)).join(Item.category).group_by(Category.id).all()
这几乎是正确的,但它不处理零情况。当一个类别的项目为零时,我仍然需要查询返回的类别。
任何帮助,非常感谢。
答案 0 :(得分:1)
实际上,我已经弄清楚了:
count_categories = db_session.query(
Category.name, func.count(Item.id)).outerjoin(
Item).group_by(Category.id).all()