У меня есть очень большая таблица SQLite с более чем 500 000 строк и примерно 15 столбцами (в основном, с плавающей точкой). Я хочу перенести данные из БД SQLite в приложение Django (которое может быть поддержано многими RDBM, но Postgres в моем случае). Все работает хорошо, но по мере того как итерация продолжается, использование памяти для процесса Python увеличивается на 2-3 Мб в секунду. Я попытался с помощью 'del' удалить объекты EVEMapDenormalize и row в конце каждой итерации, но раздувание продолжается. Вот выдержка, есть идеи?
class Importer_mapDenormalize(SQLImporter):
def run_importer(self, conn):
c = conn.cursor()
for row in c.execute('select * from mapDenormalize'):
mapdenorm, created = EVEMapDenormalize.objects.get_or_create(id=row['itemID'])
mapdenorm.x = row['x']
mapdenorm.y = row['y']
mapdenorm.z = row['z']
if row['typeID']:
mapdenorm.type = EVEInventoryType.objects.get(id=row['typeID'])
if row['groupID']:
mapdenorm.group = EVEInventoryGroup.objects.get(id=row['groupID'])
if row['solarSystemID']:
mapdenorm.solar_system = EVESolarSystem.objects.get(id=row['solarSystemID'])
if row['constellationID']:
mapdenorm.constellation = EVEConstellation.objects.get(id=row['constellationID'])
if row['regionID']:
mapdenorm.region = EVERegion.objects.get(id=row['regionID'])
mapdenorm.save()
c.close()
Меня совсем не интересует обёртывание этой БД SQLite с помощью Django ORM. Мне бы очень хотелось выяснить, как передавать данные, не занимая всю мою оперативную память.