gpt4 book ai didi

python - mysql sqlalchemy 关键字搜索

转载 作者:行者123 更新时间:2023-11-30 22:36:24 25 4
gpt4 key购买 nike

我有关键字数组:

keywords = ["word1","word2","word3"]

我有项目表:
项目:
- 编号
- 标题
- 日期

我想找到标题字段中有标题的任何记录
所以我想混合 like("%{word}%".format(word=word))和“或”
请注意,还有其他字段,所以我不能简单地制作或在所有这些字段之间,我希望这是与其他条件的 AND 但无法弄清楚如何将它们标记为一组 OR 但与其他条件 AND

最佳答案

在我的示例中,我假设您的模型定义如下:

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'

关于python - mysql sqlalchemy 关键字搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32438317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com