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)


Or there is a more pythonic way?

Thanks a lot
Luca


On Fri, Sep 27, 2013 at 5:43 PM, Ofir Herzas <herz...@gmail.com> wrote:

> 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).
>  On Sep 27, 2013 5:06 PM, "pyArchInit ArcheoImagineers" <
> pyarchi...@gmail.com> wrote:
>
>> Thanks a lot...sorry for my prevous post that I delete beacause I didn't
>> undestand I must to use this  ~
>>
>> def test_not_like(self):
>>  Session = sessionmaker(bind=self.engine, autoflush=True,
>> autocommit=True)
>> session = Session()
>> res = session.query(MAPPER).filter(and_(~MAPPER.field.contains('Value1'),
>> ~US.field.contains('Value2'),
>> ~US.field.contains('Value3'),~US.field.contains('Value4')))
>>
>> return res
>>
>> This appear to run properly now I test with my little dataset and I'll
>> try to understand is what I must to find.
>>
>> Thank you very much and sorry for the unnecessary my old replies.
>> Bye
>> Luca
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to sqlalchemy+unsubscr...@googlegroups.com.
>>
>> To post to this group, send email to sqlalchemy@googlegroups.com.
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>  --
> 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+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/groups/opt_out.
>



-- 
https://sites.google.com/site/pyarchinit/<http://www.pyarchinit.altervista.org>
pyarchinit - progetto per la gestione integrata dei dati di scavo su
piattaforme GIS Free Open Suorce

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to