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.