首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jaydebeapi获取列别名

jaydebeapi获取列别名
EN

Stack Overflow用户
提问于 2018-04-09 13:32:58
回答 2查看 896关注 0票数 1

是否有方法从JayDeBeApi返回的sql查询返回别名列名?

例如,我有以下查询:

代码语言:javascript
复制
sql = """ SELECT visitorid AS id_alias FROM table LIMIT 1 """

然后运行以下操作(connect_to_vdm()建立到我的DB的连接):

代码语言:javascript
复制
curs = connect_to_vdm().cursor()
curs.execute(sql)
vals = curs.fetchall()

我通常检索列名如下:

代码语言:javascript
复制
desc = curs.description
column_names = [col[0] for col in desc]

这将返回原始列名"visitorid",而不是查询"id_alias"中指定的别名。

我知道我可以用Python中的值交换名称,但是希望能够在查询中完成这个任务,因为它已经在Select语句中定义了。这在SQL客户机中的行为与预期相同,但在使用python/JayDeBeApi时,我似乎无法获得要返回的别名。是否有一种使用JayDeBeApi来实现此操作的方法?

编辑:我发现用CTE构造我的查询似乎有助于解决问题,但我仍然怀疑是否有更简单的解决方案。下面是我如何重写相同的查询:

代码语言:javascript
复制
sql = """ WITH cte (id_alias) AS (SELECT visitorid AS id_alias FROM table LIMIT 1) SELECT id_alias from cte"""
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-22 13:25:58

我能够使用CTE (公共表表达式)修复这个问题。

代码语言:javascript
复制
sql = """ WITH cte (id_alias) AS (SELECT visitorid AS id_alias FROM table LIMIT 1) SELECT id_alias from cte"""
票数 0
EN

Stack Overflow用户

发布于 2022-09-27 19:00:03

向吉特布的比波基致敬,但这对我来说很管用。

根据IBM (这里这里)的说法,JDBC驱动程序的行为在某种程度上发生了变化。奇怪的是,当使用像DBVisualizer这样的工具时,列别名显示得很好,而不是通过jaydebeapi查询。

若要修复,请将以下内容添加到DB URL的末尾:

代码语言:javascript
复制
:useJDBC4ColumnNameAndLabelSemantics=false;

示例:

jdbc:db2://DBSERVERPORT/DBNAME:useJDBC4ColumnNameAndLabelSemantics=false;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49734274

复制
相关文章

相似问题

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