[egenix-users] cursor.executedirect configurable?
Brad Allen
ballen at zeomega.com
Wed Sep 10 09:48:16 CEST 2008
Thanks. I haven't yet done any serious performance comparisons between
execute and executedirect with the ODBC driver we're using ( the
built-in Windows ODBC driver for SQL Server).
Instead, I was motivated by the finding that some of the large join
queries I generated using Storm worked with executedirect, but failed
cryptically using plain cursor.execute. I would prefer to find out why
the same query failed with cursor.execute rather than switch to
executedirect.
Any ideas on what would cause this a select query to fail with the plain
execute, but works fine with executedirect? Here is the error:
mx.ODBC.Error.InterfaceError: ('07009', 0, '[Microsoft][ODBC SQL Server
Driver]Invalid Descriptor Index', 6793)
Thanks.
M.-A. Lemburg wrote:
> Hello Brad,
>
> On 2008-09-10 04:18, Brad Allen wrote:
>
>> I am using mxODBC 3 with the Storm ORM, which makes use of
>> cursor.execute. I would like to find a way to configure mxODBC to use
>> executedirect without having to change or override Storm's call to
>> cursor.execute.
>>
>> Is there some way to configure mxODBC to use the executedirect behavior
>> when cursor.execute is called?
>>
>
> No, that's not possible without wrapping the cursor object and
> then redirecting the method in the wrapper.
>
> Note that cursor.execute() will work like cursor.executedirect()
> when called without parameters.
>
> You should check the performance of using one over the other.
> cursor.executedirect() will bypass the prepare step, so the
> statement will have to be parsed and processed over and over
> again.
>
> Some database backends do clever caching on the server, so this
> is not an issue, in fact, it's faster for simple queries since
> you avoid a few network round-trips.
>
> For other backends, it's slower, since they don't implement
> such caching.
>
> Another issue is related to parameter binding: using
> cursor.executedirect() the ODBC driver does not have any
> parameter type information available (this only becomes
> available via the prepare step), so mxODBC cannot do
> any efficient conversion to database data types on the
> client side. This may result in conversion problems on
> the server side and introduce extra overhead.
>
>
--
ZeOmega
Open Minds' Open Solutions
3010 Gaylord Parkway, Ste. 210
Frisco TX, 75034
http://www.zeomega.com
Brad Allen
214-618-9880 (ext. 8006)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /mailman-archives/egenix-users/attachments/20080910/1a67c691/attachment.htm
More information about the egenix-users
mailing list