Home >Database >Mysql Tutorial >How to Efficiently Execute Raw SQL Queries in Django Views?
In certain scenarios, performing raw SQL queries within Django views becomes necessary. This post delves into how to execute such queries effectively.
To execute a raw SQL query in a Django view, use the connection module and its cursor() method to establish a connection and cursor. With the cursor, queries can be executed using the execute() method.
from django.db import connection cursor = connection.cursor() cursor.execute('SELECT count(*) FROM people_person')
To apply a filter to your query, add a WHERE clause specifying the filter condition.
cursor.execute('''SELECT count(*) FROM people_person WHERE vote = "yes"''')
Query results can be retrieved using the fetchone() method on the cursor. This returns a tuple containing the result values. For instance, in the example above, the result is the count of all Person objects with vote set to "yes".
row = cursor.fetchone() print(row) # Output: (12,)
To integrate the raw SQL query into a Django view, the code in the question can be modified as follows:
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) )
The above is the detailed content of How to Efficiently Execute Raw SQL Queries in Django Views?. For more information, please follow other related articles on the PHP Chinese website!