LINUX.ORG.RU

Два cur.execute и fetchone()

 , , ,


0

1

Есть

cur.execute('''
SELECT
  ...;
''')

while True:
    rec = cur.fetchone()


    cur.execute('''
    SELECT 
    ...;
    while True:
        rec1 = cur.fetchone()
        # далее используется rec['some']

Но дело в том, что при второй выборке теряются данные из первой выборки. Возможно как-то сделать вторую выборку не трогая результаты первой выборки(я подозреваю, что можно сохранить результаты первой выборки с помощью fetchall(), но расход памяти будет под 30гб)

★★★

Сделай другой курсор. Детский сад какой-то.

gruy ★★★★★
()

Выглядит как костыль. Забери все что тебе нужно один раз из базы через fetchall, а потом сделай второй запрос. Если не можешь за раз вытащить все, то сделай несколько запросов с пагинациейLIMIT + OFFSET или LIMIT + ORDER BY "id" WHERE "id" > ... если вариант с offset для тебя слишком медленный.

Aswed ★★★★★
()

Не совсем понятно, что в итоге сделать надо. Данные полученные первым запросом планируется использовать?

Kazun3500
()

Делай всё на sql, зачем тебе тут пистон, если там данных под 30гб.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)

Выстави сюда запросы, чтобы было понятно что ты на самом деле хочешь сделать, потому что кажется что ты пошел по какому-то странному пути

gnunixon ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.