我正在尝试计算各自类别中的项目数量,并最终得到一个可以在 jinja 模板中迭代的集合。我的最终输出是这样的:
类别1、5
类别2、10
类别3, 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:计算 SQLAlchemy 中的关系 https://stackoverflow.com/questions/25500904/counting-relationships-in-sqlalchemy,这让我想到了这个问题
count_categories = db_session.query(Category.name, func.count(Item.id)).join(Item.category).group_by(Category.id).all()
这几乎是正确的,但是它不处理零情况。当类别有零个项目时,我仍然需要查询返回的类别。
任何帮助,非常感谢。
其实我已经想通了:
count_categories = db_session.query(
Category.name, func.count(Item.id)).outerjoin(
Item).group_by(Category.id).all()
See 有关连接的 SQLAlchemy 文档 http://docs.sqlalchemy.org/en/rel_1_0/orm/tutorial.html#querying-with-joins
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)