python / intermediate
Snippet
Asynchrone Datenbank-Aggregationen mit acount und aaggregate
Django 4.2+ bietet asynchrone Aggregationsmethoden wie acount() und aaggregate() für QuerySets. Diese ermöglichen die nicht-blockierende Auswertung von Zusammenfassungsstatistiken in asynchronen Views und Hintergrund-Tasks.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
from django.db.models import Avgfrom myapp.models import Orderasync def get_order_summary_metrics():total_orders = await Order.objects.filter(status='completed').acount()metrics = await Order.objects.filter(status='completed').aaggregate(avg_total=Avg('total_amount'))return {"count": total_orders,"average": metrics.get("avg_total")}
django
Erklärung
1
total_orders = await Order.objects.filter(status='completed').acount()
Asynchrone Zählung direkt über die Datenbankabfrage.
2
metrics = await Order.objects.filter(status='completed').aaggregate(
Führt nicht-blockierende Aggregationsberechnungen über asynchrone ORM-Methoden aus.
3
avg_total=Avg('total_amount')
Definiert die Aggregationsoperation für die Logik des Spaltendurchschnitts.
4
return {
Gibt das zusammengestellte asynchrone Metrik-Dictionary zurück.