Or we can just recompile the source and modify the line: line 275 in Cursor.c
self->arraySize = 1; to 50 :) On May 27, 12:21 pm, Waldemar Osuch <[EMAIL PROTECTED]> wrote: > On May 26, 5:09 pm, Michael Bayer <[EMAIL PROTECTED]> wrote: > > > > > On May 26, 2008, at 6:20 PM, Waldemar Osuch wrote: > > > >> Reading the docs for arraysize, its not clear if this only applies to > > >> fetchone() and a non-arg fetchmany(), or to all fetches (I'm hoping > > >> you have better detail on this.). If the former, why not call > > >> fetchmany() or fetchall() ? The ORM uses fetchall()/fetchmany() when > > >> receiving rows. If the latter, that seems pretty strange that > > >> cx_oracle would still make 100 individual calls for a fetchmany(100) > > >> when just one would do. > > > > Help is on the way > > >http://permalink.gmane.org/gmane.comp.python.db.cx-oracle/1325 > > > this is the same as the document which I read on the cx_oracle website. > > > What happens if I say: > > > cursor.fetchall() > > > ? > > > does it make one "round trip" per row ? or do a full fetch in one > > "round trip" ? similar question for fetchmany(n). > > The way I understand it does one "round trip" per row. > > I have brought this thread to the attention of Anthony Tuininga > (the author of cx_Oracle). His clarification follows. > > Quote: > > Up to this point the default arraysize is 1 meaning that a single row > is internally fetched at a time. This has nothing to do with > fetchone(), fetchmany() or fetchall(). Regardless of which of those > methods is used, internally cx_Oracle fetches one row at a time. If > you change the arraysize to 50, internally cx_Oracle will fetch 50 > rows at a time. Again, this is regardless of whether you use > fetchone(), fetchmany() or fetchall(). Some of the confusion may lie > in the fact that the default value for rows to fetch in fetchmany() is > the arraysize -- but that is all it is, a default value! > > In my own code I have created a subclass of cx_Oracle.Connection that > does the following: > > class MyConnection(cx_Oracle.Connection): > > def cursor(self): > cursor = cx_Oracle.Cursor(self) > cursor.arraysize = 50 > return cursor > > What this does is automatically set the arraysize to 50 every time a > cursor is created. This can be done to transparently set the arraysize > and should allow you to proceed with whatever code needs to assume an > arraysize of that value. Otherwise you can feel free to change it > yourself after creating the cursor. > > And as has already been noted, in the next release of cx_Oracle, the > default arraysize will be 50 in order to resolve this problem > "permanently". :-) > > Hope this helps. > > Anthony --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---