Thread

  1. Bug in PostgreSQL/Python (7.1.1/1.5) fetchone()

    Kevin Cole <kjcole@gri.gallaudet.edu> — 2001-06-05T02:46:17Z

    Hi again,
    
    It appears that the bug in pgdb occurs for both examples below.  Both
    return the first row multiple times.  (This is with PostgreSQL 7.1.1
    and Python 1.5.2.)
    _________________________________________
    
        for hits in range(curse.rowcount):
            print curse.fetchone()
    _________________________________________
    
        row = curse.fetchone()
        while row:
            print row
            row = curse.fetchone()
    _________________________________________
    
    On Mon, 4 Jun 2001, Andy Dustman <andy@dustman.net> wrote:
    
    >On Fri, 1 Jun 2001, Kevin Cole wrote:
    
    > > Hi,
    > >
    > > I've got a little test code that sorta works, but not as well as I'd
    > > like.  fetchall() does what I want, fetchone() appears to fetch the
    > > same row cursor.rowcount times, rather than fetching the next row.
    > > Here's what I'm doing:
    > >
    > >     import pgdb
    > >     mydb = pgdb.connect("localhost:mydb")
    > >     curse = mydb.cursor()
    > >     curse.execute("select * from mytable where state = 'MD')
    > >     for hits in range(curse.rowcount):
    > >        print curse.fetchone()
    > >
    > > If I use "for hits in curse.fetchall():" I get what I expect, and
    > > printing curse.rowcount yields the correct number of rows.  What am
    > > I misunderstanding?
    
    > Nothing that I can see. Each fetchone() invocation should return a new
    > row, so this sounds like a pgdb bug. I wouldn't use range(curse.rowcount)
    > myself; more likely I'd use fetchall(). If the result set can be
    > arbitrarily large, I'd do something like this:
    >
    > row = curse.fetchone()
    > while row:
    >     print row
    >     row = curse.fetchone()
    >
    > --
    > Andy Dustman         PGP: 0xC72F3F1D
    >     @       .net     http://dustman.net/andy
    
    -- 
     Kevin Cole                    |  E-mail:  kjcole@gri.gallaudet.edu
     Gallaudet Research Institute  |  WWW:     http://gri.gallaudet.edu/~kjcole/
     Hall Memorial Bldg  S-419     |  Voice:   (202) 651-5135
     Washington, D.C.  20002-3695  |  FAX:     (202) 651-5746