Очень медленный импорт 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)