conditional importing
Steve Holden
sholden at holdenweb.com
Mon Jul 29 11:28:09 EDT 2002
"Gerhard Häring" <gerhard.haering at gmx.de> wrote in message
news:mailman.1027907323.21253.python-list at python.org...
> * Scott Hathaway <slhath at charter.net> [2002-07-28 20:29 -0500]:
> > How can I do a conditional import? I am creating a database wrapper
class
> > that is similar to adodb in PHP.
> > I have the following class:
> >
> > >from mx.ODBC import Windows as db1
> > import MySQLdb as db2
>
> Better use something like:
>
> module_name = "MySQLdb"
> try:
> dbmodule = __import__(module_name)
> except ImportError, reason:
> # error handling here
>
> def open_connection(*args, **kwargs):
> return dbmodule.connect(*args, **kwargs)
>
> Unfortunately, the arguments for the connect method aren't standardized.
> But at least some modules allow for a single connection string where the
> arguments (host, user, passwd, ...) are separated by colons.
>
My preferred technique (when all modules obey the DB API sufficiently for my
needs) is:
if dbtype == 'odbc':
import mx.ODBC.Windows as db
else:
import MySQLdb as db
conn = db.open(...)
The real problem at present appears to be the various different modules'
insistence on using different paramstyles - in the case above, mxODBC
expects a "?" for a parameter substitution, while MySQLdb expects a "%s".
something-i-need-to-work-on-ly y'rs - steve
-----------------------------------------------------------------------
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/pwp/
-----------------------------------------------------------------------
More information about the Python-list
mailing list