gpt4 book ai didi

python - Flask-SQLAlchemy 'OR' 查询参数数量可变

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:00 24 4
gpt4 key购买 nike

我有一个高级搜索界面,可以将键值对发送到我的 Flask 应用程序。键是表中要搜索的列,值是要比较的条件。

下面是一个项目查询示例,其中 k 是项目表中的“标签”列,v 是要搜索的标签。

projects = Projects.query.filter(getattr(Projects, k).like('%{}%'.format(v)))

如果用户提交两个标签进行搜索,v 将是这两个标签的列表。然后我可以像这样查询数据库:

if len(v) == 2:
v1, v2 = v[0], v[1]
projects = Projects.query.filter(or_(
getattr(Projects, k).like('%{}%'.format(v1)),
getattr(Projects, k).like('%{}%'.format(v2)))
)

有没有更好的方法来执行标签数量(在此示例中)可变的“或”查询?

如何编写代码才能处理 2 个标签或 10 个标签?

最佳答案

您可以使用 * 扩展将任意数量的参数传递给 or_

or_filters = [getattr(Projects, k).like('%{}%'.format(term)) for term in v]
projects = Projects.query.filter(or_(*or_filters))

请记住,在 SQL 查询中使用大量 LIKE 查找通常效率很低。

关于python - Flask-SQLAlchemy 'OR' 查询参数数量可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25455071/

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