[DB-SIG] Re: db module wrapper

Jonathan M. Franz jfranz at neurokode.com
Sun Aug 22 04:15:19 CEST 2004


Well, I'm late to this conversation - so I apologize if my points have 
already been made.

What Randal is doing is very similar to what we're working towards for 
PDO 2.0 - PDO _is_ actively maintained and promoted, btw.  Heck, back in 
the 1.0.2 days we even were thrown on some CDs that linux enterprise 
magazine in europe distributed.  Frankly, we've always been surprised by 
the cold reception we've gotten on the db-sig mailing list whenever we 
raise a concern or mention our module.  Perhaps we've been too 
argumentative about things we feel the dbapi is lacking?
Some of the arguments earlier this year when Guido spoke up were things 
we took very seriously - but the conversation about what todo for dbapi 
3.0 died for no  apparent (to me) reason.

Anyway, some thoughts on ways we do things now in pdo, and how they 
intersect with Randall's ideas:
(cross pollination of ideas is always a good thing)

- connection strings
We use a single string to hold connection data, with the core parameters 
standardized (dbapi-module,username, password, database), and the rest 
given in a module specific way, but all formated into a single string 
thusly:
aConnection = 
pdo.connect("module=someModule;user=foobar;passwd=mypass;db=myDB;host=localhost")
This should be _very_ familar to ADO users.

- parameter formating
Currently we just use the underlying dbapi module's quoting method - but 
for 2.0 (which we hope to beta soon!) we're moving towards a :named 
style, using a modified form of the recipe for style unification at 
ASPN.  http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/278612
We'd considered a positional ('?') style, but found it too limiting.  
The first time you do a insert or update with 20 ?s in it, you get the 
feeling that it is rather awkward.
Of course, you could allow the user to switch styles on the fly - it'd 
just be an extra set of conversion functions.

- exceptions
We already have implemented a unified exception system - PDO contains 
it's own exceptions, and the textual description contains the underlying 
exception and the underlying exception's text - allowing for users to 
capture one set of exceptions and yet giving them all the detail they 
need to find out why the dbapi module.  It's easy to implement, just 
take a look and steal away.

==============
Things to ponder:
One thing that made my life rather painful when working on PDO 2.0 was 
that the underlying type systems in dbapi modules are so different.  The 
implementation of editable resultsets (no more update queries!) required 
some interesting juggling to bring the underlying types into the current 
namespace in a usable way.

Do you plan on editable resultsets in your module?

More soon as I catch up further with the thread.

~Jon Franz
NeuroKode Labs, LLC




More information about the DB-SIG mailing list