Jaki jest skuteczny sposób wstawiania tysięcy rekordów do tabeli SQLite przy użyciu Django?
Muszę wstawić 8000+ rekordów do bazy danych SQLite za pomocą ORM Django. Ta operacja musi być wykonywana jako cronjob około raz na minutę.
W tej chwili używam pętli for, aby przeglądać wszystkie elementy, a następnie wstawiać je jeden po drugim.
Przykład:
for item in items:
entry = Entry(a1=item.a1, a2=item.a2)
entry.save()
Jak skutecznie to zrobić?
Edytować: Małe porównanie dwóch metod wstawiania.
Bez decor_manually dekoratora (11245 rekordów):
nox@noxdevel marinetraffic]$ time python manage.py insrec
real 1m50.288s
user 0m6.710s
sys 0m23.445s
Korzystanie z commit_manually dekoratora (11245 rekordów):
[nox@noxdevel marinetraffic]$ time python manage.py insrec
real 0m18.464s
user 0m5.433s
sys 0m10.163s
Uwaga: Thetest skrypt wykonuje również inne operacje oprócz wstawiania do bazy danych (pobiera plik ZIP, wyodrębnia plik XML z archiwum ZIP, analizuje plik XML), więc czas potrzebny na wykonanie niekoniecznie reprezentuje czas potrzebny na wstawienie rekordów.