Note that we can fix it by iterating over 'row.ItemArray' instead, I just wondered if the breakage was intentional.

Michael Foord

Michael Foord wrote:
Hello all,

I'm further investigating potential compatibility issues with moving Resolver One to IronPython 2, and I've encountered a change in behaviour with respect to iterating over DataRows.

The script below works in IronPython 1, printing all the data in the rows. In IronPython 2.0 B3 it raises an exception.

IronPython 1:
C:\compile>c:\Binaries\ironpython\ipy.exe test_data.py
0 System.Data.DataRow
    0 A Big Boy Did It and Ran Away
1 System.Data.DataRow
    0 Affective Computing
2 System.Data.DataRow
    0 Clear and Present Danger

IronPython 2:
C:\compile>c:\Binaries\ironpython2\ipy.exe test_data.py
0 <System.Data.DataRow object at 0x000000000000002B [System.Data.DataRow]>
Traceback (most recent call last):
 File "test_data.py", line 29, in test_data.py
TypeError: expected IEnumerator, got DataRow


Test script:

import clr
clr.AddReference('System.Data')

from System.Data import DataSet
from System.Data.Odbc import OdbcConnection, OdbcDataAdapter


connectString = (
   "DRIVER={MySQL ODBC 3.51 Driver};"
  "blah blah blah"
   "OPTION=3;"
)

query = "SELECT title FROM books WHERE price > 2 ORDER BY title"

connection = OdbcConnection(connectString)
adaptor = OdbcDataAdapter(query, connection)
dataSet = DataSet()
connection.Open()
adaptor.Fill(dataSet)
connection.Close()

for rowIndex, row in enumerate(dataSet.Tables[0].Rows):
   print rowIndex, row
   for colIndex, data in enumerate(row):
       print '    ', colIndex, data

Michael Foord
http://www.ironpythoninaction.com/
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to