Re: Proposal: efficient iter on named cursors
От | Daniele Varrazzo |
---|---|
Тема | Re: Proposal: efficient iter on named cursors |
Дата | |
Msg-id | AANLkTimiLhbme59jpbr+frx7YNW0MJpMgv-WZ1eyVprA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Proposal: efficient iter on named cursors (Federico Di Gregorio <federico.digregorio@dndg.it>) |
Ответы |
Re: Proposal: efficient iter on named cursors
|
Список | psycopg |
On Thu, Feb 17, 2011 at 11:09 AM, Federico Di Gregorio <federico.digregorio@dndg.it> wrote: > On 17/02/11 11:57, Daniele Varrazzo wrote: >>> I think the original implementation was right because "foreach ..." >>> > doesn't mean fetch one record at a time. IMHO, >>> > >>> > 1) .fetchone() should _always_ fetch one record >>> > 2) iter(cursor) should fetch as many records as we feel right >> Yes, this is what I think too. It is consistent with what happens with >> iter(file) vs. file.readline(). The only hitch is that the DBAPI asks >> for a default of 1 for arraysize. >> >> >>> > But we can do a little trick here and make iter(cursor) respect >>> > .arraysize if arraysize was explicitly set so that if one really wants >>> > to fetch one record at a time can just set .arraysize to 1. >>> > >>> > Good or bad? >> Quite tricky as arraysize is currently a simple property. Even if we >> could do it with some property trickery, it would be surprising if >> "print cur.arraysize" would return 1 and iter(cur) was efficient; >> then, after "cur.arraysize = 1", iter(cur) would switch to fetch one >> record at time, while "print cur.arraysize" would still report 1. I >> feel it violates the principle of least astonishment, as much as being >> difficult for the user to predict what the library would do. > > Then we need a different property: itersize? While I don't like the multiplication of attributes and extensions, this sounds like the cleaner option. -- Daniele
В списке psycopg по дате отправления: