[egenix-users] mx.ODBC error: Invalid Descriptor Index
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...
More information about the egenix-users