SQLAlchemy子字符串在字符串

时间:2015-10-28 10:31:34

标签: python sql sqlalchemy

我正在尝试在数据库中查询输入搜索字符串中包含字符串字段的记录。

这样的事情:

User.query.filter(User.name in search_string)

当然,这不起作用,因为它不是有效的SQLAlchemy语句。 这似乎是一个简单的问题,但我真的找不到合适的列操作符。

我尝试了in_运算符:

User.query.filter(User.name.in_(search_string)

但那当然不起作用。我需要的是is_substring运营商。

2 个答案:

答案 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))