web-dev-qa-db-fra.com

Flask SQLAlchemy interrogeant une colonne avec "différent de"

Je peux interroger ma table Seat pour tous les sièges où aucune invitation n'est attribuée:

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

Cependant, lorsque j'interroge pour tous les sièges auxquels une invitation est attribuée, j'obtiens un NameError:

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

Voici ma classe 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'))

Comment puis-je rechercher tous les sièges où le propriétaire n'est pas vide?

40
SeanPlusPlus

La méthode filter_by() prend une séquence d'arguments de mots clés, vous devez donc toujours utiliser = Avec.

Vous souhaitez utiliser la méthode filter() qui permet !=:

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

Je pense que cela peut aider http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators.isnot

N'est aucun

query.filter(User.name == None)

ou alternativement, si pep8/linters sont une préoccupation

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

N'est pas nul

query.filter(User.name != None)

ou alternativement, si pep8/linters sont une préoccupation

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

34
bull90