Agregowanie wywołań save() w Django

Używam Django z backendem sqlite, wydajność zapisywania jest problemem. Na etapie mogę ukończyć „właściwą” bd, ale na razie utknąłem z sqlite. Myślę, że moje problemy z wydajnością zapisu są prawdopodobnie związane z faktem, że tworzę dużą liczbę wierszy i prawdopodobnie za każdym razem, gdy zapisuję () jeden, blokuje, odblokowuje i synchronizuje bd na dysku.

Jak mogę agregować dużą liczbę wywołań save() w jednej operacji na bazie danych?

1 odpowiedź

W rzeczywistości jest to łatwiejsze niż myślisz. Możesz skorzystać z transakcji w Django.

from django.db.transaction import transaction.atomic

@commit_on_success
def lot_of_saves(queryset):
    for item in queryset:
        modify_item(item)
        item.save()

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.