我正在尝试在数据库中查询输入搜索字符串中包含字符串字段的记录。
这样的事情:
User.query.filter(User.name in search_string)
当然,这不起作用,因为它不是有效的SQLAlchemy语句。 这似乎是一个简单的问题,但我真的找不到合适的列操作符。
我尝试了in_
运算符:
User.query.filter(User.name.in_(search_string)
但那当然不起作用。我需要的是is_substring
运营商。
答案 0 :(得分:4)
在SQL中它将是
SELECT * FROM user
WHERE 'search string' LIKE CONCAT('%', name, '%')
SQLAlchemy contains(other)生成子句LIKE '%<other>%'
from sqlalchemy import literal
User.query.filter(literal(search_string).contains(User.name))
答案 1 :(得分:3)
试试这个:
User.query.filter(User.name.match(search_string))
或
User.query.filter(User.name.contains(search_string))
对于使用in_
,你必须使用一个列表,如:
search_string = ['ed', 'wendy', 'jack']
User.query.filter(User.name.in_(search_string))