Dans certains scénarios, l'exécution de requêtes SQL brutes dans les vues Django devient nécessaire. Cet article explique comment exécuter efficacement de telles requêtes.
Pour exécuter une requête SQL brute dans une vue Django, utilisez le module de connexion et sa méthode curseur() pour établir une connexion et un curseur. Avec le curseur, les requêtes peuvent être exécutées à l'aide de la méthode execute().
from django.db import connection cursor = connection.cursor() cursor.execute('SELECT count(*) FROM people_person')
Pour appliquer un filtre à votre requête, ajoutez une clause WHERE spécifiant le filtre condition.
cursor.execute('''SELECT count(*) FROM people_person WHERE vote = "yes"''')
Les résultats de la requête peuvent être récupérés à l'aide de la méthode fetchone() sur le curseur. Cela renvoie un tuple contenant les valeurs de résultat. Par exemple, dans l'exemple ci-dessus, le résultat est le nombre de tous les objets Person avec un vote défini sur "oui".
row = cursor.fetchone() print(row) # Output: (12,)
Pour intégrer la requête SQL brute dans une vue Django, le code de la question peut être modifié comme suit :
from django.db import connection from app.models import Picture def results(request): cursor = connection.cursor() cursor.execute('''SELECT count(*) FROM app_picture''') all_count = cursor.fetchone()[0] cursor.execute('''SELECT count(*) FROM app_picture WHERE vote = "yes"''') yes_count = cursor.fetchone()[0] return render_to_response( 'results.html', {'all': all_count, 'yes': yes_count}, context_instance=RequestContext(request) )
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!