[egenix-users] way to prevent floats from truncating to ints?

Nathan Gossett gosnat at bethel.edu
Mon Apr 21 13:06:03 CEST 2008


Although we were never able to get the latest ODBC drivers to install 
correctly, we did manage to work around the issue by changing the 
offending column from a FLOAT to a NUMBER(10,2) type, which is correctly 
passed along without truncation even with the older driver.  This might 
not be a total solution to the issue, but it will work for our purposes 
and I thought I'd pass it along for future reference.

M.-A. Lemburg wrote:
> On 2008-04-09 22:26, Nathan Gossett wrote:
>> I'm using mxODBC to work with an Oracle 9 database, and when I try to 
>> fetch FLOAT data, they are being returned as ints.  Basically, I'm 
>> having the same issue as problem two in this posting:
>>
>> http://www.egenix.com/mailman-archives/egenix-users/2003-June/113452.html
>>
>> Setting the "leave scale 0 floats untouched" option is not really a 
>> solution, because then all of the NUMBER(10,0) data is returned as 
>> floats (which causes problems since they are supposed to be integers). 
>> I realize that mxODBC is acting exactly as documented, but I need 
>> floats to be returned as floating point numbers, while integers are 
>> returned as integers.  Is there some way around this?
> 
> What you are seeing is caused by a bug in the Oracle ODBC driver
> you are using: it returns a scale 0 value for regular floating
> values instead of the true value. As a result the mxODBC Zope DA
> then assumes that the scale of the float value is indeed 0 and
> thus an integer and truncates the values depending on the setting
> of the connection option.
> 
> There are ways to work around this problem by fetching all numbers
> as floats and then applying the conversion from floats to integers
> where necessary "by hand", but this is not ideal.
> 
> Please first try with the latest Oracle ODBC driver from the
> Oracle Full Client (not the Oracle Instance Client), apply
> all available patches and let us know whether the problem still
> persists with that driver version.
> 
> If that doesn't help either, we'll have to add a work-around to the
> underlying mxODBC Python interface and include that in the next version
> of the mxODBC Zope DA.
> 
> Thanks,



More information about the egenix-users mailing list