Django 打印数据库中执行 SQL 语句的两种方法

星野
星野
发布时间:2026-10-14| 4人浏览过
原创

本文介绍在 Django 项目中查看数据库执行的 SQL 语句的两种常用方法。第一种通过修改 settings.py 中的 LOGGING 配置,在控制台输出所有 SQL,但仅支持 SELECT 查询;第二种通过导入 django.db.connection 并使用 connection.queries 列表获取当前请求执行的 SQL,适用于调试更新操作。

Django 查看 SQL 语句的方法概述

Django 开发过程中,了解模型操作实际生成的 SQL 语句对于性能优化和问题排查至关重要。

当需要监控模型层(models)操作所对应的具体 SQL 时,可以通过特定配置或代码手段获取这些信息。

以下是两种常用的查看执行 SQL 的方法。

通过 LOGGING 配置全局监控 SELECT 语句

第一种方法需要在 Django 项目的 settings.py 文件末尾添加日志配置代码。


LOGGING = {
  'version': 1,
  'disable_existing_loggers': False,
  'handlers': {
    'console': {
      'class': 'logging.StreamHandler',
    },
  },
  'loggers': {
    'django.db.backends': {
      'handlers': ['console'],
      'level': 'DEBUG' if DEBUG else 'INFO',
    },
  },
}

这是 Django 查看执行 SQL 语句的常用方法之一。

需要注意的是,该方法仅能查看 SELECT 语句。对于 INSERT、UPDATE 或 DELETE 等更新保存操作,尝试查看可能会报错或无法正确显示。


res = Province.objects.all()
print (res.query)
SELECT 'core_province'.'id', 'core_province'.'name', 'core_province'.'code' FROM 'core_province'

配置完成后,该方法会打印出项目中所有执行过的 SQL 语句,便于全局监控。

通过 connection 对象调试具体 SQL

第二种方法需要先在代码中导入 connection 对象。


from django.db import connection

随后在具体的 Python 文件中通过访问 connection 对象的属性来打印 SQL。


print(connection.queries)
# 打印列表中的最后一条sql
# print(connection.queries[-1])

本文总结了上述两种 Django 查看数据库执行语句的技术方案。

以上介绍了在 Django 中打印数据库执行语句的两种主要方式。第一种适用于全局 SELECT 监控,第二种适用于局部调试包括更新操作在内的 SQL 查看。希望这些内容能帮助开发者更好地进行数据库调试。如有其他疑问,欢迎交流探讨。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。