from spam import eggs, spam at runtime, how?

Fredrik Lundh fredrik at pythonware.com
Tue Dec 9 08:55:08 CET 2003


"Ganesan R" wrote:
>
> >     spam = __import__('spam.eggs')
> >     eggs = spam.eggs
>
> Is there a way to do this if I don't know about "eggs" beforehand. I have
> some code which needs to import a DB module dynamically. The module could be
> 'PyPgSQL.PgSQL' or 'sqlite'. Is there a sane way to do this without exec?

here's one way to do it:

    dbapi = __import__(dbname)
    for p in name.split(".")[1:]:
        dbapi = getattr(dbapi, p)

notes:

- when given a package, __import__ imports all components, but
returns a reference to the toplevel module).

- you may still need DB-specific code to connect to the database

</F>








More information about the Python-list mailing list