是否可以获取SQLAlchemy中所有数据库的列表?我需要一个跨数据库的解决方案,所以基本的" SHOW DATABASES"没有削减它。
类似于显示所有表和列的MetaData / Inspector功能。
答案 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。