SQLAlchemy中的数据库列表

时间:2014-03-27 13:59:46

标签: python sqlalchemy

是否可以获取SQLAlchemy中所有数据库的列表?我需要一个跨数据库的解决方案,所以基本的" SHOW DATABASES"没有削减它。

类似于显示所有表和列的MetaData / Inspector功能。

3 个答案:

答案 0 :(得分:11)

看起来我自己找到了答案。

在Inspector类中有一个名为get_schema_names的方法,该方法没有很好的文档记录,但返回数据库列表(仅使用MySQL和Postgres进行测试)。

<强>用法:

import sqlalchemy as sa
engine = sa.create_engine('mysql+pymysql://user:pwd@localhost')
insp = sa.inspect(engine)
db_list = insp.get_schema_names()
print(db_list)

答案 1 :(得分:0)

这是我为mysql提出的解决方案:

    from sqlalchemy import create_engine
    eng = create_engine('mysql+pymysql://root:password@localhost:3306', pool_recycle=3600)
    q = eng.execute('SHOW DATABASES')
    available_tables = q.fetchall()

它执行一个execute并返回所有行。

答案 2 :(得分:0)

engine.execute('SELECT datname FROM pg_database;').fetchall()

DB中的每个实体都保存在某个“系统”表中。例如,在Postgres中,您可以从pg_database表中获取所有DB。