我只使用sqlalchemy进行连接池(需要调用现有的proc)并希望返回一个REF CURSOR,这是一个out参数。
sqlalchemy似乎没有光标来执行此操作。
任何建议都非常感谢。
答案 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功能的有限子集的语言。