在我的例子中我假設你的模型定義爲如下:
class Item(Base):
id = Column(Integer, primary_key=True)
title = Column(String)
date = Column(Date)
要建立OR
條件關鍵字時,您可以使用or_()
:
>>> keywords = ['word1', 'word2', 'word3']
>>> keywords_condition = or_(*[Item.title.like('%{}%'.format(keyword)) for keyword in keywords])
>>> keywords_condition
'item.title LIKE :title_1 OR item.title LIKE :title_2 OR item.title LIKE :title_3'
然後你可以使用filter()
方法來應用這個條件+他人的任何量。他們將與AND
被連接:
>>> Session.query(Item).filter(keywords_condition, Item.date == date.today())
'SELECT item.id AS item_id, item.title AS item_title, item.date AS item_date
FROM item
WHERE (item.title LIKE :title_1 OR item.title LIKE :title_2 OR item.title LIKE :title_3) AND item.date = :date_1'
[在SQLAlchemy中使用OR]的可能重複(http://stackoverflow.com/questions/7942547/using-or-in-sqlalchemy) –