Django cx_Oracle connection.cursor()。描述oracle游标数据类型

时间:2016-06-30 06:09:45

标签: django oracle django-views cx-oracle

是否可以在Django视图中获取游标数据类型的描述?
问题是,当我执行原始SQL时,我可以通过调用cursor().description来获取描述,但是当我执行cursor().callfunc('oracleTestFunc',cx_Oracle.CURSOR,)时(oracleTestFunc返回游标) 我无法获得字段描述。所以问题是获得description。我该如何实现呢?

更新

我的oracle功能是

create or replace package body test_cl is

function ret_proc_run return sys_refcursor is
  retval sys_refcursor;
begin

open retval for 
  select id_proc,inst_id,run_now from proc_run;

 return retval;
end;

end test_cl;

在Django视图中我称之为

cursor = connection.cursor()
results=cursor.callfunc('test_cl.ret_proc_run',cx_Oracle.CURSOR,)

所以我想要做的是访问oracle函数返回的各个字段(id_procinst_idrun_now),稍后在模板中使用。
我认为有可能通过cursor.description方法,但在进一步阅读文档之后我发现它不可能以这种方式,因为它将为游标数据类型返回none

1 个答案:

答案 0 :(得分:1)

是的,cursor.description是要检查的正确属性,但是根据您的问题描述,您正在查看错误的光标!您需要使用从函数返回的游标(在您的情况下命名为"结果")。另一个游标(调用存储过程的游标)将按预期返回None,因为您没有执行查询。

如果您确实需要获取原始cx_Oracle游标(由Django解包),您可以执行以下操作:

from django.db import connection
connection.cursor()
rawCursor = connection.connection.cursor()

第二行确保确实建立了连接。最后一行获取原始连接并使用它创建一个游标。