当前位置: 首页 > 面试题库 >

SQLAlchemy-获取表列表

戚飞雨
2023-03-14
问题内容

我在文档中找不到与此有关的任何信息,但是如何获得在SQLAlchemy中创建的表的列表?

我使用了类方法来创建表。


问题答案:

所有表都收集在tablesSQLAlchemy MetaData对象的属性中。要获取这些表的名称列表:

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

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

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

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

>>> metadata.reflect(engine)

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

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)


 类似资料:
  • 问题内容: 我想做这样的事情: 但是就是我尝试的时候。我该如何工作? 问题答案: 您的示例代码应该已经按原样工作。SQLAlchemy应该为其提供一个值,并假设其为自动生成的主键列。主键属性在生成时会立即在过程中填充,并且不需要调用。因此,这里的答案在于以下一项或多项: 映射的详细信息 如果使用的后端有任何奇怪的问题(例如,SQLite不会为复合主键生成整数值) 打开echo时发出的SQL表示什么

  • 问题内容: 在Java 8中,类的lambda似乎保留在数组中。例如,假设我们有此类: 然后像这样打印出来: 输出将是这样的 所以我们可以在这里看到两件事。调用两次的同一个lambda会为我们提供相同的lambda对象(这与匿名内部类不同,在匿名内部类中我们每次都可以获取一个新的lambda对象)。我们还看到它们看起来像是被保存在类中的某种“ Lambda”结构中 我的问题是,我可以在课堂上掌握l

  • 基本信息 Path: /api/interface/getCatMenu Method: GET 接口描述: 请求参数 Query 参数名称 是否必须 示例 备注 project_id 是 token 是

  • sp_get_terms($tag) 功能: 返回符合条件的所有分类 参数: $tag:查询标签,以字符串方式传入,例:"ids:1,2;field:term_id,name,description,seo_title;limit:0,8;order:path asc,listorder desc;where:term_id>0;" ids:调用指定id的一个或多个数据,如 1,2,3 fiel

  • X1.2新增 sp_get_users($tag,$where) 功能: 获取符合条件的用户列表; 参数: $tag:查询标签,默认:field:*;limit:0,8;order:create_time desc; $where:查询where数组,按照thinkphp where array格式; 返回: 数组,符合条件的用户列表 使用 //获取最新注册的8个新用户 $las

  • 接口说明 获取权限列表 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/power/1.0.0/query 是否需要登录 是 请求字段说明 无 响应字段说明 参数 类型 说明 id String 权限编号 name String 权限名称 url String 权限对应的页面路径 createtime String 权限创