Dans Django, des requêtes SQL brutes peuvent être effectuées dans les vues pour récupérer ou manipuler des données qui peuvent ne pas être facilement accessibles via l'ORM de Django (Mappage objet-relationnel). Considérez le code suivant dans views.py :
from app.models import Picture def results(request): all = Picture.objects.all() yes = Picture.objects.filter(vote='yes').count()
Ce code vise à compter le nombre d'objets Picture avec un vote « oui ». Pour y parvenir à l'aide d'une requête SQL brute, on peut procéder comme suit :
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), )
Ce code ouvre une connexion à la base de données, crée un curseur pour exécuter des requêtes, exécute une requête SQL brute avec la clause WHERE pour filtre les votes comme « oui » et extrait le décompte de la première ligne du résultat. Il exécute ensuite une requête Django ORM standard pour récupérer tous les objets Picture et restitue enfin le modèle "results.html" avec les données obtenues.
L'utilisation de requêtes SQL brutes peut offrir plus de flexibilité et de contrôle sur le SQL sous-jacent exécuté, mais il est essentiel de prendre en compte les implications en matière de sécurité et de garantir une validation appropriée des entrées pour éviter d'éventuelles attaques par injection SQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!