Maison > base de données > tutoriel mysql > Comment exécuter efficacement des requêtes SQL brutes dans les vues Django ?

Comment exécuter efficacement des requêtes SQL brutes dans les vues Django ?

Linda Hamilton
Libérer: 2024-12-18 22:53:12
original
566 Les gens l'ont consulté

How to Efficiently Execute Raw SQL Queries in Django Views?

Affinage des requêtes SQL dans les vues Django

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.

Exécution de requêtes SQL brutes

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')
Copier après la connexion

Filtrage avec une clause WHERE

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"''')
Copier après la connexion

Accès aux résultats de la requête

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,)
Copier après la connexion

Implémentation dans les vues Django

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)
    )
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal