我有带有关键字的数组:
keywords = ["word1","word2","word3"]我有一张桌子上的物品:
项目:
我要找到在标题字段中有标题的任何记录。
因此,我想在like("%{word}%".format(word=word))和"OR“之间混用
请注意,还有其他字段,所以我不能简单地在所有字段之间创建或介于它们之间,我希望这是一个与其他条件相同的字段,但无法确定如何将它们标记为一组or,但与其他字段一起使用。
发布于 2015-09-07 13:46:41
在我的示例中,我假设您的模型定义如下:
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'https://stackoverflow.com/questions/32438317
复制相似问题