2010-08-13 30 views
0

我只使用sqlalchemy進行連接池(需要調用現有的procs)並且想返回一個REF CURSOR,它是一個輸出參數。sqlalchemy Oracle REF CURSOR

在sqlalchemy中似乎沒有光標來做到這一點。

任何建議非常感謝。

回答

0

直覺 - 您可能不得不向下潛入比SQLAlchemy更低的層次,可能是底層的cx_oracle類。

由格哈德·哈林另一個論壇上給出了一個答案:

import cx_Oracle 

con = cx_Oracle.connect("me/[email protected]") 
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引擎蓋下應該有一些方法來使用相同的連接池。

是否有任何選項來包裝你的函數返回REF CURSOR在Oracle端的視圖? (假設REF CURSOR的形狀沒有改變,你可以通過某種方式將正確的參數放入你的函數中 - 可能通過將它們作爲會話變量或臨時表粘貼進去,這應該可行 - 我已經使用了這種方法將REF CURSOR函數中的數據檢索爲僅支持Oracle特性的有限子集的語言)。