ПЕРЕМЕЩАЙТЕ именованный курсор в psycopg2

1

Я использую именованный курсор в 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.
Теги:
psycopg2

1 ответ

2

Вы должны инициализировать курсор запросом, используя cursor.execute(). Затем вы можете использовать те же функции (fetchone(), fetchall() т.д.), fetchone() с курсорами на стороне клиента.

Команда SQL MOVE реализована с помощью scroll (значение [, mode = 'относительный']) в psycopg2.

Простой пример (запрос генерирует 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,)

Узнайте больше о серверных курсорах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню