sqlalchemy Oracle REF CURSOR

时间:2010-08-13 05:30:08

标签: python oracle sqlalchemy

我只使用sqlalchemy进行连接池(需要调用现有的proc)并希望返回一个REF CURSOR,这是一个out参数。

sqlalchemy似乎没有光标来执行此操作。

任何建议都非常感谢。

1 个答案:

答案 0 :(得分:0)

直觉 - 你可能不得不潜入比SQLAlchemy更低的级别,也许是潜在的cx_oracle类。

GerhardHäring在另一个论坛上提供的答案:

import cx_Oracle 

con = cx_Oracle.connect("me/secret@tns") 
cur = con.cursor() 
outcur = con.cursor() 
cur.execute(""" 
BEGIN 
   MyPkg.MyProc(:cur); 
END;""", cur=outcur) 

for row in out_cur: 
print row 

我认为,由于SQLAlchemy在引擎盖下使用cx_oracle,应该有一些方法可以使用相同的池连接。

是否有任何选项可以将函数包装在Oracle端的视图中返回REF CURSOR? (如果REF CURSOR的形状没有改变,你可以以某种方式将正确的参数输入到你的函数中 - 可能通过将它们作为会话变量或临时表粘贴,这应该可行 - 我已经使用了这种方法从REF CURSOR函数检索数据到仅支持Oracle功能的有限子集的语言。