[DB-SIG] API suggestion: expose 'quote' method
chris at cogdon.org
Tue Jun 3 19:46:20 EDT 2003
I'm certainly getting a lot more 'aggressive' feedback from this
proposal than I was expecting. I was hoping for more of a 'good idea',
or 'good idea, but a lot of work in these circumstances X, Y, Z', or a
'you're doing it the wrong way, try ABC' instead. Have I really gotten
on people's nerves so much that they wont even LOOK at the application
I'm trying to write? Perhaps suggesting alternatives, or something else?
Anyway... I'd like to consolidate some of the arguments I've received:
Doing what I'm proposing with a DMBS that requires pure-string
statements (like PostgreSQL and MySQL) is relatively easy, since the
driver has to quote anyway: making it visible in a standard form is
little work. However, for databases that handle all the 'binding' on
the DB site is hard because there's NO current code in the driver that
does this functionality.
Also, as I understand it, finding the relevant '?' marks (for example)
in a SQL statement is non-trivial, since '?' may appear in places other
than binding points (For example, inside a literal string). (Now, I had
to go figure that one out for myself... someone could have just
Because of the above issue, the proposal, useful or not, is
non-trivial. Perhaps it would be better to write a library that allowed
piecemeal construction of SQL Statements without binding the parameters
into the string statement. But, instead, keeping them together until
being passed into the 'execute' function.
I'll omit the example code for brevity... but I think I could come up
with something that demonstrates this point nicely. Write me if you
want to see it.
On other points...
I still maintain that writing code to make a particular DB client
library meet the DB-API spec *IS* the driver writer's job. Of course
supplying a quoting function isn't part of that job yet, because it's
not part of the specification. My proposal was to make the quoting
function part of the next spec revision and therefore make it the
driver writers job to get the quoting function correct.
If the difficulty in doing so outweighs the utility of having this
method, then please... just say so. I think it would be useful, but I
can see alternatives that are difficult. However, it might not be as
difficult as supporting quoting for a DMBS that does not currently
require quoting to support db-api 2.0. If that's the case, then please,
just say so.
If someone could go through the example applications, the ones that I
think a quoting method would be useful to use, and suggest another way
of doing it, or perhaps just saying "do what you were suggesting as an
alternate; write a few functions to let a string and parameters be
joined together without quoting" then I would be appreciative.
("`-/")_.-'"``-._ Chris Cogdon <chris at cogdon.org>
. . `; -._ )-;-,_`)
(v_,)' _ )`-.\ ``-'
_.- _..-_/ / ((.'
((,.-' ((,/ fL
More information about the DB-SIG