如何在django shell中查看执行的数据库sql语句?
高洛峰
高洛峰 2016-11-14 11:33:00
[Django讨论组]

使用python manage.py shell进入 shell,查询语句People.objects.get(id=11),经过什么样设置可以在shell中同时输出执行了哪些sql语句?

我的 Django 版本 1.8.10

老版本的 Django 可以使用以下的方法打印执行的 sql 语句,新版本貌似无效了。

import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
手机用户1722242633

\:乛孞孞孞孞孞'

欧阳克

官方文档的回答 How can I see the raw SQL queries Django is running?

>>> from django.db import connection
>>> connection.queries

通过这个方式,可以看所有的数据库查询,并不是很直观。

还有一种方式,

 >>> a = Blog.objects.filter(entry__authors__name__isnull=True)
 >>> print a.query
 >>> Blog.objects.filter(entry__authors__name__isnull=True).query.sql_with_params()


三叔

说个比较简单的方式吧,比如下面的代码:

>>> from django.contrib.auth.admin import User
>>> User.objects.all()
>>> u=User.objects.all()
>>> print u.query
SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user"

在这里直接将查询结果调用其query属性就可以获取其执行的结果了,只是你提供的那种方式是不想手动进行这么繁琐的操作而已

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号