У меня есть некоторый код, который записывает данные в базу данных, просматривая несколько сотен тысяч строк, ничего особенного, но это заставляет мой компьютер разработки зависать.Код выглядит более или менее следующим образом.
input_reader = csv.reader(open(filename), delimiter=',', quotechar='"')
count = 0
for line in input_reader:
obj = ObjectToEnter(line[1], line[2])
child_obj = ChildObject(line[5]) #possibly a few children are entered
obj.relation.append(child_obj)
session.add(obj)
count += 1
session.commit()
Это просто пожирает память, и мой инстинкт говорит, что может быть зафиксировать каждые 500 объектов с чем-то вроде if count% 500 == 0: session.commit ()
Вопрос в том, фиксирует ли каждый x ряд или, может быть, сбрасывает время от времени, что может помочь с проблемой?Есть ли какая-то лучшая практика, которую я здесь пропускаю?Обратите внимание, что этот точный код прекрасно работает с меньшим набором данных, который может поместиться в памяти.