【问题标题】:How to get column names in a SQLAlchemy query?如何在 SQLAlchemy 查询中获取列名?
【发布时间】:2021-09-27 17:35:00
【问题描述】:

我有一个功能(远程数据库,我的应用程序中没有模型),我正在向它发出请求。是否可以使用query 而不是execute 来获取列名?

session = Session(bind=engine)
data = session.query(func.schema.func_name())

我得到一个带有值的字符串数组,我如何得到键?我想生成一个字典。

当我使用execute 发出请求时,字典生成正常。

data = session.execute("select * from schema.func_name()")
result = [dict(row) for row in data]

【问题讨论】:

    标签: python flask sqlalchemy psycopg2


    【解决方案1】:

    你可以这样做:

    keys = session.execute("select * from schema.func_name()").keys()
    

    或者在查询后尝试访问:

    data = session.query(func.schema.func_name()).all()
    data[0].keys()
    

    您也可以使用:data.column_descriptions

    文档: https://docs.sqlalchemy.org/en/14/orm/query.html

    【讨论】:

    • 这(带查询)返回 RMKeyView([])... :( 但执行时返回所有键。
    • 使用all()?
    • 是的。我还尝试运行 data = session.execute(func.schema.func_name().all() 并返回密钥,但它与函数名 RMKeyView(['func_name_1']) 完全相同。
    • 试试data.column_descriptions
    • [{'name': None, 'type': NullType(), 'aliased': False, 'expr': , 'entity': None}] 只取回this without all() 调用date.all()后返回的是一个没有字段名的字符串列表,不知道为什么,例如:[('(OK , name, f,)',), ('(OK, id, f,)',)')] 这样正常吗,数据应该这样返回吗?
    猜你喜欢
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多