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_'

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 <javascript:>> 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 <javascript:>.
> To post to this group, send email to sqlal...@googlegroups.com 
> <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 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