2014-03-27 29 views
8

是否有可能獲取SQLAlchemy中所有數據庫的列表?我需要一個跨數據庫解決方案,所以基本的「SHOW DATABASES」不會削減它。SQLAlchemy中的數據庫列表

與MetaData/Inspector功能類似,顯示所有表和列。

回答

7

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

Inspector類中存在一個名爲get_schema_names的方法,該方法沒有很好的記錄,但返回了數據庫列表(僅用MySQL和Postgres進行了測試)。

用法:

import sqlalchemy as sa 
engine = sa.create_engine('mysql+pymysql://user:[email protected]') 
insp = sa.inspect(engine) 
db_list = insp.get_schema_names() 
print(db_list) 
+2

也許我錯過了一些東西 - 但這不會返回數據庫列表。它只是返回單個數據庫上的模式列表。我正在使用PostgreSQL 9.5。 – guyarad

0

這裏是一個解決方案,我想出了MySQL的:

from sqlalchemy import create_engine 
    eng = create_engine('mysql+pymysql://root:[email protected]:3306', pool_recycle=3600) 
    q = eng.execute('SHOW DATABASES') 
    available_tables = q.fetchall() 

它的執行,並返回所有行。