[英]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.