On Sep 9, 2014, at 4:45 PM, pyArchInit ArcheoImagineers <pyarchi...@gmail.com> 
wrote:

> Hi Michael and thanks a lot.
> 
> 
> Il giorno venerdì 5 settembre 2014 18:23:31 UTC+2, Michael Bayer ha scritto:
> you batch out the values to be used in the IN, then one of two choices:  my 
> preference is to run separate SELECT statements, using IN with each batch.  
> If you really can't do that, you can combine the batches of IN groups with an 
> OR:   "x IN (batch1) OR x IN (batch2) ..."
> 
> 
> 
> 
> O spent 2 day to find a solutions:
> I make write to python this string: 
> 
> cmd_str = "session.query(MAPPCLASS).filter(or_(MAPPCLASS.id_invmat.in_([1, 2, 
> 3, 4])).(MAPPCLASS.id_invmat.in_([5, 6, 7, 
> 8]))).order_by(asc(MAPPCLASS.id_invmat)).all()"
> 
> But I receive this error..
> 
> Neither 'BinaryExpression' object nor 'Comparator' object has an attribute 
> 'or_'

there's be somewhere you're calling <something>.or_(), which is incorrect, 
or_() is standalone.   

not sure what "cmd_str" is about, you can just do this directly:

args = [<lots of args>]
or_args = []
while args:
        chunk = args[0:1000]
        or_args.append(MAPCLASS.id.in_(chunk))

session.query(MAPCLASS).filter(or_(*or_args))





> 
> mmmm .... a little suggestion to the right sintax to pass to the eval?
>  
> 
> keep in mind when you send enormous strings to your database, that places a 
> burden on the query system.  Oracle (which I assume you're using) also caches 
> these queries
> 
> 
> I'm using sqlite DB.
> 
> Best regards and thanks a lot.
> Luca
>  
> 
> 
> 
> 
> On Sep 5, 2014, at 2:30 AM, mando <mand...@gmail.com> wrote:
> 
>> Hi to all,
>> 
>> I wrote a method like this to reuse the code for many tables at the same 
>> time[0]
>> 
>> But, with more than 1000 records sqlite doesn't accepts the amount of id 
>> inside .in_(id_list)
>> 
>> How can I filter, split or can manage it?
>> 
>> Thanks a lot and best regards,
>> Luca
>> 
>> 
>> [0]
>>      def query_sort(self,id_list, op, to, tc, idn):
>>              self.order_params = op #sorting parameters
>>              self.type_order = to #asc or desc
>>              self.table_class = tc #the name of the mapper class
>>              self.id_name = idn #the name of the id
>>              
>>              filter_params = self.type_order + "(" + self.table_class + "." 
>> + self.order_params[0] + ")"
>>              for i in self.order_params[1:]:
>>                      filter_temp = self.type_order + "(" + self.table_class 
>> + "." + i + ")"
>> 
>>                      filter_params += ", "+ filter_temp
>> 
>>              Session = sessionmaker(bind=self.engine, autoflush=True, 
>> autocommit=True)
>>              session = Session()
>> 
>>              cmd_str = "session.query(" + self.table_class + ").filter(" + 
>> self.table_class + "." + self.id_name + ".in_(id_list)).order_by(" + 
>> filter_params + ").all()"
>> 
>>              return eval(cmd_str)
>> 
>> -- 
>> 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+...@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/d/optout.
> 
> 
> -- 
> 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/d/optout.

-- 
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/d/optout.

Reply via email to