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  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to