jaydebeapi 获取列别名

jaydebeapi Getting column alias names

有没有办法 return 来自 sql 查询的别名列名 return 来自 JayDeBeApi

例如,我有以下查询:

sql = """ SELECT visitorid AS id_alias FROM table LIMIT 1 """

然后我 运行 以下(connect_to_vdm() 建立到我的数据库的连接):

curs = connect_to_vdm().cursor()
curs.execute(sql)
vals = curs.fetchall()

我通常像这样检索列名:

desc = curs.description
column_names = [col[0] for col in desc]

这 return 是原始列名 "visitorid" 而不是查询中指定的别名 "id_alias"

我知道我可以用 Python 中的值交换名称,但希望能够在查询中完成此操作,因为它已在 Select 语句中定义。这在 SQL 客户端中的行为符合预期,但在使用 python/JayDeBeApi 时我似乎无法获得 return 的别名。有没有办法使用 JayDeBeApi 来做到这一点?

编辑: 我发现使用 CTE 构建我的查询似乎有助于解决问题,但仍然想知道是否有更直接的解决方案。以下是我重写相同查询的方式:

sql = """ WITH cte (id_alias) AS (SELECT visitorid AS id_alias FROM table LIMIT 1) SELECT id_alias from cte"""

我能够使用 CTE(通用 Table 表达式)修复此问题

sql = """ WITH cte (id_alias) AS (SELECT visitorid AS id_alias FROM table LIMIT 1) SELECT id_alias from cte"""