Flask-SQLAlchemy获取非零计数的行

时间:2016-03-12 16:48:00

标签: flask flask-sqlalchemy

我的数据库中有以下两个模型:

class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True)
    websites = db.relationship('Website', backref='category', lazy='dynamic')

class Website(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
    url = db.Column(db.String(1000), nullable=False)
    class_name = db.Column(db.String(50), nullable=False)

我现在要做的是编写一个表达式,用于加载具有一个或多个与之关联的网站的所有类别。在SQL中,我可以使用joinhaving来实现此目的,但我无法将其转换为SQLAlchemy。

我首先尝试导入并使用func,但后来意识到它没有在Flask-SQLAlchemy中定义。我的下一次尝试是Category.query.having(Category.websites.count() > 1).all(),但这给了我AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Category.websites has an attribute 'count'的错误。什么是正确的方法?

任何帮助都会受到关注!

1 个答案:

答案 0 :(得分:1)

我相信你仍然可以使用group_by()和having()函数的连接。这是一个例子taken from the docs for having() that might be what you're looking for:

if(e.getSource()== showRGBCube){
        cubedemo.CubeDemo.launch();
    }