Очень медленный импорт CSV в Django

У меня есть рабочая функция в моем views.py для импорта загруженного csv-файла в мою базу данных (sqlite). Размер csv-файла составляет около 760kb и около 2.1k строк данных. У меня уходит около 9 минут на импорт этих данных с помощью следующего упрощенного кода. Есть ли более быстрый метод?

for row in reader: 
    item.objects.update_or_create( 
        sn = row[0], defaults={ 
        "field_a": row[1], 
        "field_b": row[2], 
        "field_c": row[3], 
        "field_d": row[4], 
        } 
    )``` 

Thank you for your help!

Ваш цикл for выполняется 2,100 раз, и каждый из них создает обращение к БД для создания или обновления объекта - вероятно, это и является причиной медленной работы, хотя это может быть и что-то другое, трудно сказать, не зная более широкого контекста вашего кода. Django имеет функции bulk update и bulk create в ORM, которые консолидируют создание/обновление в один вызов БД:

https://docs.djangoproject.com/en/4.0/ref/models/querysets/#bulk-create

Вам нужно будет написать код, который будет обрабатывать создание и обновление отдельно, поскольку Django не имеет функции массового обновления или создания (update_or_create)

Вернуться на верх