我在python脚本中使用Cx_Oracle执行了多个这样的Oracle查询
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来恢复如下信息:
cur = cx.cursor()
cur.execute(query)
desc = cur.description但是描述只返回列名:
[('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脚本中的列相关联的表吗?
发布于 2021-02-11 00:22:33
仅通过检查游标描述,无法在查询中找出特定列来自哪个表。但是,您可以在查询中使用别名,如下所示:
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将包含告诉您它来自哪个表的信息。
https://stackoverflow.com/questions/66138510
复制相似问题