In the end, I think it's more efficient to implement such a function in an abstraction layer which is maintained independently from the DB-API database modules. Otherwise, you'd have to wait for all modules to implement the change and that can take a few years.
Perhaps the abstraction layer should look for <module>.uri_connect. If this function cannot be found, then a database specific translation of uri to connect () is used. Otherwise, changes to the driver specific connect would also require changes to the abstraction layer connect.
This is probably what I'd end up doing -- obviously I can't change the code that's out there, and I want to use this relatively recently. Mostly I'm just hoping for a convention that other's can follow, until this transitional module is no longer necessary.
An alternative would be to always use uri_connect. In addition, a set of modules is provided that implements this uri translation for older drivers. The user would then have to choose between the real module or the translation module.
That seems awkward, but I suppose doable. That translating module would also have to include the rest of the required functions if it was to be a DB-API module. Monkey-patching in a uri_connect function seems easier, if we're going down that route. Hmm... except you can't monkey patch something in lazily -- i.e., wait until the user actually imports MySQLdb and then insert the function.
-- Ian Bicking / [EMAIL PROTECTED] / http://blog.ianbicking.org _______________________________________________ DB-SIG maillist - [email protected] http://mail.python.org/mailman/listinfo/db-sig
