Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算sqlalchemy模型中的相关项_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

计算sqlalchemy模型中的相关项

计算sqlalchemy模型中的相关项,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,我试图计算各个类别中的项目数量,并最终得到一个集合,我可以在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 = Colum

我试图计算各个类别中的项目数量,并最终得到一个集合,我可以在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)
有人亲切地指了指我的方向,这就引出了我的疑问

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()
请参见

可能的副本