是否可以在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_proc
,inst_id
,run_now
),稍后在模板中使用。
我认为有可能通过cursor.description
方法,但在进一步阅读文档之后我发现它不可能以这种方式,因为它将为游标数据类型返回none
。
答案 0 :(得分:1)
是的,cursor.description是要检查的正确属性,但是根据您的问题描述,您正在查看错误的光标!您需要使用从函数返回的游标(在您的情况下命名为"结果")。另一个游标(调用存储过程的游标)将按预期返回None,因为您没有执行查询。
如果您确实需要获取原始cx_Oracle游标(由Django解包),您可以执行以下操作:
from django.db import connection
connection.cursor()
rawCursor = connection.connection.cursor()
第二行确保确实建立了连接。最后一行获取原始连接并使用它创建一个游标。