On 14-02-2011, M.-A. Lemburg wrote:
> William Dode wrote:
>> On 13-02-2011, Vernon Cole wrote:
>>> --===============0804799855==
>>> Content-Type: multipart/alternative; boundary=0016e644df66158a5b049c2cec40
>>>
>>> --0016e644df66158a5b049c2cec40
>>> Content-Type: text/plain; charset=ISO-8859-1
>>> Content-Transfer-Encoding: quoted-printable
>>>
>>> This sounds like a handy feature. Recent releases of adodbapi allow the
>>> programmer to specify the paramstyle she wishes to use. If she uses 'qmark'
>>> (the default) her query is used unchanged. If she uses 'named' or 'format',
>>> then her query is converted to 'qmark' before being used.
>>> The cursor stores an ADODB.Command structure as its .cmd attribute. The
>>> (converted) query text is stored in the .cmd.CommandText attribute. There i=
>>> s
>>> no storage of the original query, although it might be an optimization to
>>> keep it around to avoid re-parsing.
>>>
>>> Q) Should a reference to cursor.query return the original query text, or th=
>>> e
>>> reformatted version?
>>
>> Same as mogrify
>>
>>>>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar'))
>>>>> cur.query
>> "INSERT INTO test (num, data) VALUES (42, E'bar')"
>>
>>
>>>
>>> Q) What is "mogrify"? Is that a reformatted version?
>>
>> mogrify(operation[, parameters])¶
>>
>> Return a query string after arguments binding. The string returned is
>> exactly the one that would be sent to the database running the execute()
>> method or similar.
>>
>> >>> cur.mogrify("INSERT INTO test (num, data) VALUES (%s, %s)", (42,
>> 'bar'))
>> "INSERT INTO test (num, data) VALUES (42, E'bar')"
>>
>> I use to log it and some times use it to copy and paste.
>
> Since database adapater usually try to avoid merging the parameters
> into the query string before sending them off to the server and
> instead send the query and parameters separately (which is more
> efficient and also allows caching of access plans on the server
> side based on the query string), wouldn't it be better to log
> both the query string and a Python repr() of the parameters
> instead ?
I would like to see the query after the binding. For example with
msaccess "insert into t (a), (?)", (True,) will insert -1 with
postgresql it will insert 1
Also i would like to can copy and paste the query for debugging. For
example with msaccess, if a field is misswritted the error will not show
wich field is it. If i copy-paste it on msaccess it will say me wich
field is it.
I thought maybe ado could show me this. If not i will do it by hand for
debugging and of course use the params for the real query.
>
> That's how we have do such logging in our code and it works nicely.
>
--
William Dodé - http://flibuste.net
Informaticien Indépendant
_______________________________________________
DB-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/db-sig