[DB-SIG] paramstyles, again
Carsten Haese
carsten at uniqsys.com
Mon Jun 4 16:00:21 CEST 2007
On Mon, 2007-06-04 at 15:32 +0200, M.-A. Lemburg wrote:
> Do you really think it's reasonable to have the module parse
> every single SQL statement just to detect the param style ?
Well, at least I don't think it's unreasonable to do so. This parsing is
not expensive and only happens when the query is prepared, so the
performance impact is minimal.
> What happens if you're in qmark style mode and the SQL statement
> contains substrings which look like named style (but are not
> intended that way, e.g. think stored procedures) ?
Do you have a concrete example?
> This approach also contradicts the explicit is better than
> implicit Zen rule.
Well, one might argue that the paramstyle is explicitly visible in the
format of the query string.
> Just so that there's no misunderstanding: you're free to implement
> this sort of extension in your module(s), but making this
> mandatory in the spec feels wrong.
Fair enough.
> Following you proposal to require auto-detection, this would mean
> more than just duck-typing. You wouldn't know what type to expect
> until you've parsed the SQL statement string - ie. when you're
> already inside the .execute() method and passed the argument
> parsing step.
>
> That's a bit much too dynamic and too implicit for an interface
> specification.
I thought being dynamic was Pythonic ;) Anyway, I do think we can reach
a compromise here:
> So I'm:
>
> * +1 on making support one param style mandatory for all
> implementations
Any one? Let's make named mandatory, then.
> * +1 on requiring an interface to adjust the param style on a
> per connection or even per cursor basis, so that it's easy
> to setup an implementation to the mandatory param style
> (in case the module defaults to another param style for backwards
> compatibility reasons)
>
> This interface would have to support at least the mandatory
> param style.
+1, let's discuss what that interface should look like.
> * -1 on doing auto-detection of param styles at .execute()
> call time based on parsing the SQL statement
I now agree with -1 on making auto-detection mandatory as long as there
is a way to turn it on. How about making a special paramstyle called
auto?
--
Carsten Haese | Phone: (419) 861-3331
Software Engineer | Direct Line: (419) 794-2531
Unique Systems, Inc. | FAX: (419) 893-2840
1687 Woodlands Drive | Cell: (419) 343-7045
Maumee, OH 43537 | Email: carsten at uniqsys.com
More information about the DB-SIG
mailing list