一、简介
Django提供了一个非常好用的ORM,可以方便的操作数据库,但是有时候我们需要查看ORM生成的SQL语句,以便优化ORM的使用。本攻略将详细介绍如何在Django中打印执行的SQL语句。
二、打印SQL语句的方法
在Django中,打印出在数据库中执行的SQL语句非常简单,我们只需要在settings.py
中设置DEBUG=True
,然后在执行ORM语句时,Django会自动将执行的SQL语句打印出来。
具体操作步骤如下:
1.打开settings.py
文件,将DEBUG
设置为True
,代码如下:
DEBUG = True
2.在需要打印出SQL语句的地方,添加如下代码:
from django.db import connection
print(connection.queries)
这个打印出来的查询语句,以列表形式返回,每一项都是一个字典,里面包含了查询用时、SQL语句、参数等内容。
三、示例说明
假设我们有一个名为Person
的模型,模型代码如下:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
现在,我们需要查询年龄大于等于18岁的人的信息,并打印出SQL语句。
代码如下:
from django.db import connection
from app.models import Person
persons = Person.objects.filter(age__gte=18)
print(connection.queries)
这个时候会打印出类似以下的内容:
[{'sql': 'SELECT "app_person"."id", "app_person"."name", "app_person"."age" FROM "app_person" WHERE "app_person"."age" >= 18', 'time': '0.000'}]
我们可以看到这个查询语句是查询age
大于等于18的Person
模型的信息。
再看一个例子,现在我们需要将所有人的年龄都加上10岁。
代码如下:
from django.db import connection
from app.models import Person
with connection.cursor() as cursor:
cursor.execute('UPDATE app_person SET age = age + 10')
print(connection.queries)
这个时候会打印出类似以下的内容:
[{'sql': 'UPDATE app_person SET age = age + 10', 'time': '0.000'}]
我们可以看到这个查询语句是将Person
模型中所有人的年龄都加上10岁。
总之,在Django中打印出SQL语句非常简单,只需要在settings.py
中设置DEBUG=True
,然后在需要打印SQL语句的地方,使用connection.queries
即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django打印出在数据库中执行的语句问题 - Python技术站