[DB-SIG] Getting a list of tables from a database

Michael Bayer mike_mp at zzzcomputing.com
Wed May 16 19:36:48 CEST 2012

On May 14, 2012, at 10:33 AM, Edward Welbourne wrote:

> Most of SQL is sufficiently standardised to permit writing portable code
> to explore a database - provided access compatible with PEP 249 is
> available - without need to know details of the SQL implementation; so
> it would be nice if some future version of the DB API were to specify a
> standard method, of connection objects, that can be used to obtain the
> list of tables available via the connection.

while not part of PEP 249 or probably appropriate as part of the "standard", portable schema information is one of the goals of SQLAlchemy, which it provides via the Inspector interface.   For example, the listing of table names in the default schema is as follows:

from sqlalchemy import create_engine
from sqlalchemy.engine.reflection import Inspector

engine = create_engine("mydialect://user:pass@host/dbname")
insp = Inspector.from_engine(engine)

print insp.get_table_names()

SQLAlchemy implements a sizable array of database "dialects", each of which perform the requisite queries to get at various bits of schema detail, including the ability to represent a full series of tables as navigable Python constructs.

More information about the DB-SIG mailing list