首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python和cx_Oracle从精选数据中恢复表信息

问如何使用python和cx_Oracle从精选数据中恢复表信息
EN

Stack Overflow用户
提问于 2021-02-10 22:10:08
回答 1查看 51关注 0票数 0

我在python脚本中使用Cx_Oracle执行了多个这样的Oracle查询

代码语言:javascript
复制
Select  bo.lxname, bt.mxname, bo.lxrev, bo.lxcrdate, bo.lxmoddate, uss.mxname, pol.mxname, st.mxname 
from pdm.lxbo_5DC2EDE2 bo 
INNER JOIN pdm.mxbustype bt ON bo.lxtype = bt.mxoid 
INNER JOIN pdm.mxuser uss ON bo.lxowner = uss.mxoid 
INNER JOIN pdm.mxpolicy pol ON bo.lxpolicy = pol.mxoid 
INNER JOIN pdm.mxstatereq st ON bo.lxstate = st.mxoid 
where bo.Lxoid = '713307622'

我知道我可以从游标中使用.description来恢复如下信息:

代码语言:javascript
复制
    cur = cx.cursor()
    cur.execute(query)
    desc = cur.description

但是描述只返回列名:

代码语言:javascript
复制
[('LXNAME', <cx_Oracle.DbType DB_TYPE_VARCHAR>, 128, 128, None, None, 1), ('MXNAME', <cx_Oracle.DbType DB_TYPE_VARCHAR>, 128, 128, None, None, 1), ('LXREV', <cx_Oracle.DbType DB_TYPE_VARCHAR>, 128, 128, None, None, 1), ('LXCRDATE', <cx_Oracle.DbType DB_TYPE_DATE>, 23, None, None, None, 1), ('LXMODDATE', <cx_Oracle.DbType DB_TYPE_DATE>, 23, None, None, None, 1), ('MXNAME', <cx_Oracle.DbType DB_TYPE_VARCHAR>, 128, 128, None, None, 1), ('MXNAME', <cx_Oracle.DbType DB_TYPE_VARCHAR>, 128, 128, None, None, 1), ('MXNAME', <cx_Oracle.DbType DB_TYPE_VARCHAR>, 128, 128, None, None, 1)]

正如您所看到的,在我的代码中,有多个mxname,但是没有办法通过这些信息来判断这个"mxname“是否与这个表相关联。

我在游标中搜索了更多信息,但没有找到有关表的任何信息。

有什么简单的方法可以恢复与python脚本中的列相关联的表吗?

EN

回答 1

Stack Overflow用户

发布于 2021-02-11 00:22:33

仅通过检查游标描述,无法在查询中找出特定列来自哪个表。但是,您可以在查询中使用别名,如下所示:

代码语言:javascript
复制
Select
    bo.lxname as bo_lxname,
    bt.mxname as bt_mxname,
    bo.lxrev as bo_lxrev,
    bo.lxcrdate as bo_lxcrdate,
    bo.lxmoddate as bo_lxmoddate,
    uss.mxname as uss_maxname,
    pol.mxname as pol_maxname,
    st.mxname as st_mxname
from pdm.lxbo_5DC2EDE2 bo 
INNER JOIN pdm.mxbustype bt ON bo.lxtype = bt.mxoid 
INNER JOIN pdm.mxuser uss ON bo.lxowner = uss.mxoid 
INNER JOIN pdm.mxpolicy pol ON bo.lxpolicy = pol.mxoid 
INNER JOIN pdm.mxstatereq st ON bo.lxstate = st.mxoid 
where bo.Lxoid = '713307622'

使用这个查询,cursor.description将包含告诉您它来自哪个表的信息。

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

https://stackoverflow.com/questions/66138510

复制
相关文章

相似问题

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