Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrere kleine Methoden zur Verbesserung der Effizienz des Django-Modells

Mehrere kleine Methoden zur Verbesserung der Effizienz des Django-Modells

高洛峰
高洛峰Original
2016-10-17 14:03:401050Durchsuche

Djangos Modell ist nicht sehr effizient, insbesondere wenn Sie viele Datenbankoperationen durchführen. Wenn Sie Django nur zum Öffnen einer Unternehmenswebsite oder zum Auslagern von Projekten verwenden, können Sie es ein wenig überspringen und sind zufällig ein Effizienzfreak Wenn die Effizienzanforderungen des Programms relativ hoch sind, sollten Sie auf die folgenden Methoden achten.
1. Methode count():
Wenn wir die Methode count verwenden möchten, um die Anzahl der Datensätze zu ermitteln, können wir die folgende Methode verwenden:
num = info.objects.filter('... ').count( )
Werfen wir einen Blick darauf, wie die Zählmethode im Django-Modellmodul geschrieben ist?
def count(self):
"""
Führt einen SELECT COUNT() aus und gibt die Anzahl der Datensätze als
Ganzzahl zurück.
Wenn das QuerySet bereits vollständig zwischengespeichert ist, wird dies einfach zurückgegeben die Länge
des zwischengespeicherten Ergebnissatzes, um mehrere SELECT COUNT(*)-Aufrufe zu vermeiden.
"""
wenn self._result_cache nicht None und nicht self._iter ist:
gibt len(self) zurück. _result_cache)
return self.query.get_count(using=self.db)

Aus dem oben Gesagten muss count() des Djang-Modells die SELECT COUNT()-Anweisung ausführen, die tatsächlich die Datenbank abfragt Wenn also viele Datensätze vorhanden sind, ist
die Effizienz der Datenbankabfrage immer noch relativ hoch.
Wenn wir beispielsweise die len()-Methode verwenden können, um die Länge zu ermitteln, ist die verwendete Iteration geringer .
info = info.objects.filter('...')
num = len(info)
2 Mehrzweck-Slices
Zum Beispiel, wenn wir Daten abfragen möchten, wenn Ihre Daten Das Volumen ist relativ groß. Wenn Sie in diesem Fall den Umfang der Abfrage nicht einschränken, ist der Systemaufwand sehr groß. Wenn Sie beispielsweise
Nachrichtendaten in Seiten anzeigen möchten, müssen Sie so viel lesen Daten so, wie Sie sie auf einer Seite anzeigen möchten, anstatt alle Daten auf einmal zu lesen und sie dann gemäß eingeschränkten Bedingungen anzuzeigen.
Wenn Sie beispielsweise die ersten 10 Nachrichten anzeigen möchten, gehen Sie wie folgt vor:
news = News.objects.all()[1:10]
statt:
news = News.objects.all()
news = news[1:10]
Weil
news = News.objects.all()
news = news[1:10]
Sie sind Beim Einfügen der Datenbank werden alle darin enthaltenen Daten ausgelesen, was nicht sehr effizient ist.
Die oben genannten Punkte sind einige kleine Methoden zur Verbesserung der Effizienz des Django-Modells. Ich hoffe, dass jeder bei der Entwicklung von Projekten mit Django auf einige Effizienzaspekte achtet.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Metaklassen in DjangoNächster Artikel:Metaklassen in Django