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

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

本文介绍在 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 相关产品和应用

全部下载

专题列表