LINUX.ORG.RU

SqlAlchemy и итерация по таблице

 ,


0

1

Скрипт вроде

for article in session.query(Article):
    print article.description

выполняется секунд двадцать, отгрызает пару гигов памяти и внезапно дохнет, не напечатав ничего, зато выдав ошибку:

Traceback (most recent call last):
  File "C:\Users\***\workspace\RCV1\Main.py", line 25, in <module>
    for article in session.query(Article):
  File "C:\Python27\lib\site-packages\sqlalchemy-0.7.3-py2.7-win32.egg\sqlalchemy\orm\query.py", line 2146, in instances
    fetch = cursor.fetchall()
  File "C:\Python27\lib\site-packages\sqlalchemy-0.7.3-py2.7-win32.egg\sqlalchemy\engine\base.py", line 2985, in fetchall
    l = self.process_rows(self._fetchall_impl())
  File "C:\Python27\lib\site-packages\sqlalchemy-0.7.3-py2.7-win32.egg\sqlalchemy\engine\base.py", line 2952, in _fetchall_impl
    return self.cursor.fetchall()
  File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
MemoryError

Гонять его приходится под Win64, Python стоит 32-битный. Сама база занимает гига два.

Как бы мне исправить положение?



Последнее исправление: Yak (всего исправлений: 2)
Ответ на: комментарий от linuxnewb

Да точно та же фигня, с мелкими отличиями. Оно зачем-то пытается выбрать из базы все-все кортежи, вместо того, чтобы подгружать их по мере необходимости.

Собственно, сейчас я поставил себе Python x64, теперь этот долбаный запрос просто отжирает по 6 гигов памяти из 8. Хотя и как-то проходит.

Но а если база будет хоть раза в два больше (а она будет) - то это же таки цорес.

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