Flask SQLAlchemy使用“not equals”查询列

时间:2013-04-18 21:33:05

标签: python sqlalchemy flask flask-sqlalchemy

我可以在Seat表中查询没有分配邀请的所有座位:

seats = Seat.query.filter_by(invite=None).all()

但是,在查询已分配邀请的所有座位时,我会收到NameError

seats = Seat.query.filter_by(invite!=None).all()
NameError: name 'invite' is not defined

这是我的Seat课程:

class Seat(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    invite_id = db.Column(db.Integer, db.ForeignKey('invite.id'))
    invite = db.relationship('Invite',
        backref=db.backref('folks', lazy='dynamic'))

如何查询所有者不为空的所有座位?

2 个答案:

答案 0 :(得分:64)

filter_by()方法采用一系列关键字参数,因此您必须始终使用=

您想使用允许!=的{​​{3}}方法:

seats = Seat.query.filter(Seat.invite != None).all()

答案 1 :(得分:31)

我认为这可以提供帮助 http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators.isnot

是无

query.filter(User.name == None)

或者,如果pep8 / linters是关注的话     query.filter(User.name.is_(None))

不是无

query.filter(User.name != None)

或者,如果pep8 / linters是一个问题

query.filter(User.name.isnot(None))