Each column has a 'like' method, so you should be able to filter by it: filter(~Table.field.like("%value1%"))
Hi Luca,
Keep in mind that contains will not map to 'like'. Hence if you want your query to have a 'like' clause, you'll have to use the 'like' method (the end result of 'contains' will be the same though as 'like' beginning and ending with a percent sign).
--
--
You received this message because you are subscribed to a topic in the Google Groups "sqlalchemy" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sqlalchemy/_dpnK-WZzKQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sqlalchemy+...@googlegroups.com.
To post to this group, send email to sqlal...@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.
Hi to all.I try to use the code in this way (query LIKE with OR operator)res = session.query(MAPPER).filter(or_(MAPPER.field.contains('Value1'),MAPPER.field.contains('Value2'), MAPPER.field.contains('Value3'),MAPPER.field.contains('Value4')))
With a small dataset, I found the records I want, but with a larger dataset sqlalchemy return me an error:more than 255 arguments.To bypass this problem in the past I used the operator in_ in this way:id_list = [1, 2, 3]session.query(CLASS).filter(CLASS.field.in_(id_list)).all()I've guessed that was possible to make something like this:value_to_find = [CLASS.field.contains('value1'), CLASS.field.contains('value2')]session.query(CLASS).filter(CLASS.field.in_(value_to_find)).all()This script runs without error, but didn't return me any result.Because is a OR type query, it's a good idea make single research for each value and storing the id of every record in a list?Smothing like this:res_list = []for value in value_list:res = session.query(MAPPER).filter(MAPPER.field.contains(value))for r in res:res_list.append(res.id_record)