A Possoble Bug in DCOracle2?

DeepBlue DeepBlue at DeepBlue.org
Sat Oct 6 23:17:04 CEST 2001


Have anyone run into the following problem:
import DCOracle2
db=DCOracle2.Connect(SomeconnectionString)  # use some database
c=db.cursor()
c.execute('select * from SomeTable') #use your favourite sql statement
r=c.fetchone()
list=r[0]
while r:
  r=c.fetchone()
  list.append(r[0])

we get an error that index is out of range.  The reason is that a null
element is being appended to list and an error is produced.

The following works fine:
db=DCOracle2.Connect(SomeconnectionString)  # use some database
c=db.cursor()
c.execute('select * from SomeTable')  #use your favourite sql statement
r=c.fetchone()
list=r[0]
while r:
  r=c.fetchone()
  if r != None:
    list.append(r[0])

which means that in this case where r = None, nothing is appended to the
list.
Now try this:  Assume that we know that the result of the sql will produce
three rows:
db=DCOracle2.Connect(SomeconnectionString)  # use some database
c=db.cursor()
c.execute('select * from SomeTable') #use your favourite sql statement
r=c.fetchone()
print r
while r:
  r=c.fetchone()
  print r

What is printed is not three rows, but FOUR rows.  the fourth one is None.
So, an extra row is being produced, with the fourth one being None.
Is this a bug?
DeepBlue









More information about the Python-list mailing list