Hi Michael,
I use  my method for every tables of my DB so I pass the mapper class, the 
name of id, etc, etc. and through a string I build the cmd to pass to the 
eval function.

I'll try your method.. Thanks a lot.
Best regards
Luca

Il giorno martedì 9 settembre 2014 22:58:59 UTC+2, Michael Bayer ha scritto:
>
>
> On Sep 9, 2014, at 4:45 PM, pyArchInit ArcheoImagineers <
> [email protected] <javascript:>> 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 <[email protected]> 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 [email protected].
>> To post to this group, send email to [email protected].
>> 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 [email protected] <javascript:>.
> To post to this group, send email to [email protected] 
> <javascript:>.
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to