[IronPython] DataRows and IronPython 2.0 B3

Michael Foord fuzzyman at voidspace.org.uk
Mon Jun 23 17:41:40 CEST 2008


Curt Hagenlocher wrote:
> It's very unlikely that this was intentional.  I suspect that it's 
> related to a change in the way we handle interfaces -- this wouldn't 
> be the first unanticipated consequence of that change. :/
>
:-)

Michael

>  
> On Mon, Jun 23, 2008 at 8:30 AM, Michael Foord 
> <fuzzyman at voidspace.org.uk <mailto:fuzzyman at voidspace.org.uk>> wrote:
>
>     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
>         Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>         http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
>     _______________________________________________
>     Users mailing list
>     Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>   




More information about the Ironpython-users mailing list