在Django 中,可以在視圖中執行原始SQL 查詢來檢索或操作可能無法透過Django 的ORM 輕鬆存取的數據(對象關係映射)。考慮views.py中的以下程式碼:
from app.models import Picture def results(request): all = Picture.objects.all() yes = Picture.objects.filter(vote='yes').count()
此程式碼旨在計算投票為「yes」的 Picture 物件的數量。要使用原始SQL 查詢來實現此目的,我們可以按以下步驟操作:
from django.db import connection def results(request): with connection.cursor() as cursor: cursor.execute("SELECT COUNT(*) FROM app_picture WHERE vote = 'yes'") row = cursor.fetchone() yes = row[0] # Extract the count from the first row all = Picture.objects.all() return render_to_response( "results.html", {"picture": picture, "all": all, "yes": yes}, context_instance=RequestContext(request), )
此程式碼開啟與資料庫的連接,建立遊標來執行查詢,使用WHERE 子句執行原始SQL 查詢將投票過濾為“是”,並從結果的第一行中提取計數。然後,它執行常規 Django ORM 查詢來檢索所有 Picture 對象,最後使用取得的資料渲染「results.html」模板。
使用原始 SQL 查詢可以提供更大的靈活性和對執行的底層 SQL 的控制,但必須考慮安全隱患並確保正確的輸入驗證以防止潛在的 SQL 注入攻擊。
以上是如何在 Django 檢視中使用原始 SQL 查詢有效地統計資料庫記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!