如何在Python代码中使用postgres游标

时间:2014-12-04 11:20:40

标签: python postgresql stored-procedures cursor psycopg2

我在postgres中有一个存储函数:

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

然后在Python中我想调用过程来逐行获取returnung游标,以便使用psycopg2进行exapmle。 有没有办法执行此操作?谢谢。

1 个答案:

答案 0 :(得分:3)

psycopg2创建server 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