繁体   English   中英

按包含列表中 substring 的字段过滤 sqlalchemy 查询

[英]Filter a sqlalchemy query by field that contains a substring from a list

我正在为我的 web 应用程序开发高级搜索过滤器,并想知道是否有办法实现这样的过滤器。 我需要的是能够指定子字符串列表,然后从指定列表中过滤包含任何 substring 的值的查询。

Account.name [夏安、丹、弗兰、莎朗、凯伦]

filter_list = ['an', 'ar']

后查询[Dan, Fran, Sharon, Karen]

所以在上面的例子中,夏安将被删除,因为该名称不包含“an”或“ar”。

我尝试过到目前为止我尝试过的是 contains 和 in_ 运算符,尽管我不确定如何将两者结合起来。 _in 仅在字符串完全匹配时才有效,并且 contains 一次只能使用 1 个字符串。 有任何想法吗?

查询 = session.query(Account).filter(Account.name).in_(filter_list)

查询 = session.query(Account).filter(Account.name).contains(filter_list[0])

我最终自己弄清楚了。 如果有人好奇,这就是我的做法。

mylist = ['ar', 'an']

filter_list = [Account.first_name.contains(x) for x in mylist]

q = session.query(Account).filter(
    or_(
        *filter_list
    )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM