2013-04-18 2 views
29

я могу запросить мой стол мест для всех мест, где есть не пригласит присвоенные:колба SQLAlchemy запрашивая столбец с не равно

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

Однако при запросе всех мест, которые инвайт назначены, я получаю ERR:

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

NameError: name 'invite' is not defined 

Вот мой класс сиденье:

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')) 

Как я могу запросить все места, где владелец не пуст?

Благодаря

ответ

42

filter_by() метод принимает последовательность ключевых аргументов, так что вы всегда должны использовать «=» с ним. Вы хотите использовать метод filter(), который позволяет использовать !=.

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

или

seats = Seat.query.filter(Seat.invite_id != None).all() 
27

Я думаю, что это может помочь http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators.isnot

является не

query.filter(User.name == None) 

или в качестве альтернативы, если pep8/пуха являются проблемой

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

Этого нет

query.filter(User.name != None) 

или в качестве альтернативы, если pep8/пуха являются проблемой

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

+1

Вы также можете использовать # NOQA – alternative

+0

Я пытаюсь не отфильтруйте ни одно значение из поля метки, оно, похоже, не работает: 'q = session.qu ery (Table1.id, (Table2.column1 + Table2.column2) .label ('table2_sum')). filter (qctable2_sum! = None) 'Дает мне q, используемый перед ошибкой объявления, и' q = q.filter (qctable2_sum ! = Нет) 'дает мне" объект запроса не имеет атрибута c error "... – DarthSpeedious

+0

вы должны определить q прежде, чем использовать его. Попробуйте 'q = session.query (Table1.id, (Table2.column1 + Table2.column2) .label ('table2_sum')) q = q.filter ((Table2.column1 + Table2.column2)! = Нет) ' и дайте мне знать – bull90

Смежные вопросы