SQLAlchemy - 获取表的列表

170 投票
17 回答
198206 浏览
提问于 2025-04-16 20:14

我在文档里找不到相关的信息,但我想知道怎么才能获取在SQLAlchemy中创建的表的列表。

我是通过类的方法来创建这些表的。

17 个回答

67
from sqlalchemy import create_engine
engine = create_engine('postgresql://use:pass@localhost/DBname')
print (engine.table_names())

这是一个代码块,里面可能包含一些编程相关的内容或者示例代码。具体的内容需要根据上下文来理解。

如果你有任何具体的代码或者问题,可以把它们放在这里,我会帮助你理解。

105

engine这个对象里,有一个方法可以用来获取表的名称列表。这个方法叫做engine.table_names()

160

所有的表格都保存在 SQLAlchemy 的 MetaData 对象的 tables 属性里。如果你想获取这些表格的名字列表,可以这样做:

>>> metadata.tables.keys()
['posts', 'comments', 'users']

如果你在使用声明式扩展,那么你可能并不需要自己管理元数据。幸运的是,元数据仍然存在于基类上,

>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)

如果你想知道你的数据库里有哪些表格,即使是那些你还没有告诉 SQLAlchemy 的表格,你可以使用表反射。这样,SQLAlchemy 会检查数据库,并把所有缺失的表格更新到元数据里。

>>> metadata.reflect(engine)

对于 Postgres 数据库,如果你有多个模式(schemas),你需要遍历引擎中的所有模式:

from sqlalchemy import inspect
inspector = inspect(engine)
schemas = inspector.get_schema_names()

for schema in schemas:
    print("schema: %s" % schema)
    for table_name in inspector.get_table_names(schema=schema):
        for column in inspector.get_columns(table_name, schema=schema):
            print("Column: %s" % column)

撰写回答