我在psycopg2中使用了命名光标。如何重置光标从0开始?我使用了以下代码,但没有效果,并且有错误。
with conn.cursor(name="curname") as cursor:
cursor.itersize = 100
cursor.execute("MOVE ABSOLUTE 0 IN curname",)
错误:
LINE 1: DECLARE "curname" CURSOR WITHOUT HOLD FOR MOVE ABSOLUTE 0 IN.
答案 0 :(得分:2)
您必须使用cursor.execute()
使用查询来初始化光标。然后,您可以使用与客户端游标相同的功能(fetchone()
,fetchall()
等)。
SQL MOVE
命令由psycopg2中的scroll(value[, mode='relative'])实现。
简单的示例(查询生成10行,其整数从1到10):
with conn.cursor(name="curname") as cursor:
cursor.itersize = 100
cursor.execute("select generate_series(1, 10)")
print('first:', cursor.fetchone())
cursor.scroll(9, mode = 'absolute')
print('tenth:', cursor.fetchone())
cursor.scroll(0, mode = 'absolute')
print('first again:', cursor.fetchone())
输出:
first: (1,)
tenth: (10,)
first again: (1,)