過濾
鑑於以下模型
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False)
birthday = Column(Date)
你可以過濾查詢中的列:
import datetime as dt
session.query(User).filter(User.name == 'Bob')
session.query(User).filter(User.birthday < dt.date(2000, 1, 1))
對於第一種情況,有一個捷徑:
session.query(User).filter_by(name='Bob')
可以通過連結 filter
方法使用 AND 關係組合過濾器:
(session.query(User).filter(User.name.like('B%'))
.filter(User.birthday < dt.date(2000, 1, 1)))
或者更靈活地使用過載的按位運算子 &
和|
:
session.query(User).filter((User.name == 'Bob') | (User.name == 'George'))
不要忘記處理運算子優先順序的內括號。