Ian Bicking wrote:
M.-A. Lemburg wrote:

This doesn't strike me as very Pythonic. The DB API spec specifies a
set of keyword parameters that cover most usage scenarios already:

        As a guideline the connection constructor parameters should be
        implemented as keyword parameters for more intuitive use and
        follow this order of parameters:

        dsn         Data source name as string
        user        User name as string (optional)
        password    Password as string (optional)
        host        Hostname (optional)
        database    Database name (optional)

        E.g. a connect could look like this:

        connect(dsn='myhost:MYDB',user='guido',password='234$')

Your syntax seems to be more geared torwards an abstract
interface to databases, which is - as you say - one level
above the DB API spec.

It should be rather simple to write a factory function which
takes your syntax and then imports the right module, translates
the parameters and connects to the database.


This isn't meant to replace the current connect function, just augment it. I would expect that implementations would specifically translate URIs into a connect invocation. However, it would be useful if this was distributed with drivers, since there's no a general way to map URIs to connections for all databases. If it's not part of drivers, then I'll just make a separate library to do this so other people can use it, but it won't (at least initially) support drivers I don't use (which happens to include mxODBC among others).

I have also noticed that connect functions are rather poorly documented for many drivers, so my implementation might not be accurate.

What we could add an optional keyword argument uri="..." which database could then interpret according to your suggestion.

This would be backwards compatible with the existing DB API.

However, I don't see why the scheme name should be the name
of the database module... I'd opt for "dbapi2:" as scheme -
after all, that's what the protocol scheme is all about ;-)

--
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Mar 30 2005)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::
_______________________________________________
DB-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to