2014-12-04 58 views
0

內有Postgres的存儲功能:我如何使用Postgres的遊標Python代碼

CREATE FUNCTION return_curs() RETURNS refcursor AS $$ 
BEGIN 
    OPEN cursor_x FOR SELECT col FROM table_y; 
    RETURN cursor_x; 
END; $$ 

然後在Python我想調用的程序使用psycopg2的exapmle按行獲取returnung光標一行。 有沒有什麼辦法可以做到這一點?謝謝。

回答

3

這是比較容易讓psycopg2server side cursor創建工作just by naming it

cursor = conn.cursor(name='cursor_x') 
query = "select * from t" 
cursor.execute(query) 
for row in cursor: 
    print row 

要使用返回光標功能執行它像往常一樣:

cur = conn.cursor() 
cur.callproc('return_curs') 

然後搭上返回光標與命名光標:

named_cursor = conn.cursor(name='cursor_x') 
for row in named_cursor: 
    print row 
+0

謝謝,我知道服務器端curso rs,但是在這裏我們需要以某種方式利用DB中已有的存儲函數。 – 2014-12-04 12:03:36

+0

@ИванСудос更新 – 2014-12-04 12:11:50