Есть
cur.execute('''
SELECT
...;
''')
while True:
rec = cur.fetchone()
cur.execute('''
SELECT
...;
while True:
rec1 = cur.fetchone()
# далее используется rec['some']
Но дело в том, что при второй выборке теряются данные из первой выборки. Возможно как-то сделать вторую выборку не трогая результаты первой выборки(я подозреваю, что можно сохранить результаты первой выборки с помощью fetchall(), но расход памяти будет под 30гб)