首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQLAlchemy -获取表列表

SQLAlchemy -获取表列表
EN

Stack Overflow用户
提问于 2011-06-25 05:25:32
回答 11查看 115K关注 0票数 124

我在文档中找不到任何关于这方面的信息,但是如何才能获得在SQLAlchemy中创建的表列表呢?

我使用类方法来创建表。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-06-25 05:40:09

所有表都收集在SQLAlchemy MetaData对象的tables属性中。要获取这些表的名称列表,请执行以下操作:

代码语言:javascript
复制
>>> metadata.tables.keys()
['posts', 'comments', 'users']

如果您使用的是声明性扩展,那么您可能不会自己管理元数据。幸运的是,元数据仍然存在于基类中,

代码语言:javascript
复制
>>> Base = sqlalchemy.ext.declarative.declarative_base()
>>> Base.metadata
MetaData(None)

如果您正在尝试找出数据库中存在哪些表,甚至是那些您甚至还没有告诉SQLAlchemy的表,那么您可以使用表反射。然后,SQLAlchemy将检查数据库并使用所有缺少的表更新元数据。

代码语言:javascript
复制
>>> metadata.reflect(engine)

对于Postgres,如果您有多个模式,则需要遍历引擎中的所有模式:

代码语言:javascript
复制
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)
票数 118
EN

Stack Overflow用户

发布于 2015-05-31 14:51:21

engine对象中有一个方法可以获取表名列表。engine.table_names()

票数 96
EN

Stack Overflow用户

发布于 2017-03-19 05:36:56

代码语言:javascript
复制
from sqlalchemy import create_engine
engine = create_engine('postgresql://use:pass@localhost/DBname')
print (engine.table_names())
票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6473925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档