variable assignment in "while" loop

Andy Todd andy47 at halfcooked.com
Tue Jul 29 12:04:15 EDT 2003


sismex01 at hebmex.com wrote:

>>From: Andy Todd [mailto:andy47 at halfcooked.com] 
>>Sent: Martes, 29 de Julio de 2003 10:23 a.m.
>>
>>Spot on, with one (minor) correction. With a for loop you have to 
>>iterate over the results of a call to a method on the cursor, e.g.;
>>
>>for info in mydbcursor.fetchall():
>>     print "Information:", info
>>
>>You could replace fetchall() with fetchmany() or, if you are feeling 
>>contrary, fetchone() ;-)
>>
>>Regards,
>>Andy
>>
> 
> 
> Are you sure about this?  Because, if you have to iterate
> through .fetchall()  (for example), then the cursor isn't
> actually an iterable object, the result of fetchall() is
> (it's a list, which is iterable), same goes for fetchmany();
> BUT, if you iterate over the results of fetchone() then
> you're gonna do a columnwise iteration over a single row.
> 
> :-)
> 
> So... anyone... do cursors have an __iter__() method?
> I don't have a DB module at hand to check it out...
> 
> -gustavo
> 
> 

Technically, cursor objects are not iterators, and the DB-API 
specification has this to say about the various methods that return data;

"""
.fetchone()

Fetch the next row of a query result set, returning a
single sequence, or None when no more data is
available.

...

.fetchmany([size=cursor.arraysize])

Fetch the next set of rows of a query result, returning a
sequence of sequences (e.g. a list of tuples). An empty
sequence is returned when no more rows are available.

...

.fetchall()

Fetch all (remaining) rows of a query result, returning
them as a sequence of sequences (e.g. a list of tuples).
"""

Which means that the cursor object itself is not an iterator, and the 
methods need only return a sequence (or sequence of sequences).

But, thats not to say that the db modules can't implement a generator to 
produce the results from the 'fetch' methods if they want to. I don't 
know if any of the database modules do, but then thats up to the module 
authors and I tend not to worry about it too much, I just trust the module.

Regards,
Andy
-- 
--------------------------------------------------------------------------------
 From the desk of Andrew J Todd esq - http://www.halfcooked.com/







More information about the Python-list mailing list