[egenix-users] mx.ODBC error: Invalid Descriptor Index

Jim Vickroy Jim.Vickroy at noaa.gov
Thu Apr 15 12:36:49 CEST 2010


M.-A. Lemburg wrote:
> Alexandre Fayolle wrote:
>   
>> Hello Charlie, 
>>
>> Thanks for you answer. 
>>
>> On Thursday 15 April 2010 17:30:06 Charlie Clark wrote:
>>     
>>> Am 15.04.2010, 17:14 Uhr, schrieb Alexandre Fayolle> 
>>>       
>>     
>>> This looks like an incorrect application of the parameters. You *use* ?
>>> for parameters in this case. You must use string formatting to generate
>>> your SQL statement for "SELECT ?, ? FROM table" from your first example
>>> because you are passing variables to a statement and not parameters to the
>>> database which has already prepared the statement. 
>>>       
>> Let me rephrase this. I was lazy, the call generating the exception was:
>>
>> datetime1= datetime.datetime(2010, 4, 15, 16, 51, 25, 468000)
>> datetime2 = datetime.datetime(2010, 4, 15, 16, 51, 25, 453000)
>> cursor.executedirect('UPDATE cw_CWUser SET cw_modification_date = ?,
>> cw_last_login_time = ? WHERE cw_eid = ?', (datetime1, datetime2, 5))
>>
>> The exception is  mx.ODBC.Error.DataError: ('22008', 0, '[Microsoft][SQL 
>> Server Native Client 10.0]Datetime field overflow. Fractional second precision 
>> exceeds the scale specified in the parameter binding.', 7748)
>>     
>
> This explains why you are seeing the error: Python datetime
> instances use more than just 2 digits precision in their
> seconds string representation, i.e. more than what SQL Server
> expects when requesting timestamps as strings.
>
> However, I wonder why SQL Server requests this data as string
> data, since it's well possible to use a native
> timestamp ODBC data structure for this, which also assures
> that full precision is maintained and no conversion takes place.
>   
Could you try the above with cursor.execute() and see whether
> you still get the same error ?
>
>   
>>> The ODBC trace log is produced by the ODBC driver not by mxODBC.
>>>       
>> I was thinking of the mxODBC.log file mentionned in §4.7 of the mxODBC 
>> documentation. Is it possible to enable ODBC driver tracing when you don't go 
>> through the ODBC Data Source manager to connect to the database? 
>>     
>
> That depends on the driver you are using.
>
> For the mxODBC.log to be generated you need a special debug build
> which we can provide if needed.
>
>   


FWIW, I have applications that perform SQL Server (2003 and 2008) 
inserts using datetime.datetime instances as a matter of course 
(1-minute cadence 24x7).  -- jv
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /mailman-archives/egenix-users/attachments/20100415/1cea05ac/attachment.htm


More information about the egenix-users mailing list