2013-04-18 130 views
29

我可以查詢我的座位表,其中有沒有邀請分配的所有席位:燒瓶SQLAlchemy的查詢柱不等於

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

但是,查詢有一個邀請分配的所有座位的時候,我得到一個錯誤:

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 (table1.id,(Table2.column1 + Table2.column2).label('table2_sum'))。filter(qctable2_sum!= None)'給出在聲明錯誤之前使用的q,q = q.filter(qctable2_sum !=無)'給我「查詢對象沒有屬性c錯誤」... – DarthSpeedious

+0

你必須先定義q才能使用它。嘗試 'q = session.query(Table1.id,(Table2.column1 + Table2.column2).label('table2_sum')) q = q.filter((Table2.column1 + Table2.column2)!= None )' 並且讓我知道 – bull90