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

Comment puis-je exécuter des requêtes SQL brutes dans les vues Django ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 17:26:10350parcourir

How Can I Execute Raw SQL Queries in Django Views?

Exécution de requêtes SQL brutes dans les vues Django

Django permet aux développeurs d'effectuer des requêtes SQL brutes directement à partir des vues. Cela peut être utile pour effectuer des opérations complexes ou récupérer des données qui ne sont pas facilement accessibles via l'ORM de Django.

Effectuer une requête SQL brute

Pour effectuer une requête SQL brute dans Django, vous pouvez utiliser le étapes suivantes :

  1. Importez l'objet de connexion depuis django.db.
  2. Créez un objet curseur en utilisant curseur = connexion.cursor().
  3. Exécutez la requête SQL en utilisant curseur.execute(query).
  4. Récupérez les résultats en utilisant row = curseur.fetchone().

Exemple

L'exemple suivant montre comment exécuter la requête SQL donnée en utilisant l'ORM de Django et un SQL brut requête :

from app.models import Picture
from django.db import connection

def results(request):
    # Using Django ORM
    all = Picture.objects.all()
    yes = Picture.objects.filter(vote='yes').count()
    
    # Using raw SQL
    cursor = connection.cursor()
    cursor.execute('''SELECT COUNT(*) FROM pictures''')
    row = cursor.fetchone()
    num_all = row[0]
    
    cursor.execute('''SELECT COUNT(*) FROM pictures WHERE vote = "yes"''')
    row = cursor.fetchone()
    num_yes = row[0]
    
    return render_to_response(
        'results.html', 
        {'picture':picture, 'num_all':num_all, 'num_yes':num_yes}, 
        context_instance=RequestContext(request)
    )

Clause WHERE pour le filtrage

Pour filtrer les résultats à l'aide de la clause WHERE, incluez simplement la clause WHERE dans la requête SQL. Par exemple, pour filtrer le vote pour « oui » :

cursor.execute('''SELECT COUNT(*) FROM pictures WHERE vote = "yes"''')

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!

Déclaration:
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