Django调试技巧:通过日志配置与自定义函数打印SQL语句

Noah
Noah
发布时间:2026-10-13 | 3人浏览过
原创

本文详细介绍在Django项目中调试时打印SQL语句的两种方法。首先讲解如何在settings.py中配置LOGGING字典,将django.db.backends日志级别设为DEBUG并输出到控制台。其次提供一段自定义Python函数代码,通过判断查询集类型直接获取SQL字符串,并格式化高亮打印最近执行的SQL语句,帮助开发者快速定位数据库问题。

本文主要分享在调试Django应用时,如何有效打印SQL语句的日志代码实例。文中提供了详细的示例代码,对开发者在学习或实际工作中排查数据库相关问题具有较高的参考价值。

通过LOGGING配置打印SQL

第一种方法是通过修改项目配置文件来实现。具体操作是在项目的settings.py文件中添加相应的日志配置代码,以开启SQL语句的记录功能。


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

自定义函数获取并打印SQL

第二种方法是编写一个独立的辅助函数,用于在代码执行过程中动态获取并打印SQL语句。这种方法更加灵活,适用于需要即时查看特定查询结果的场景。


from django.db import connection
from django.db.models.query import QuerySet
def getSql(res):
  if type(res) == QuerySet:
    sql = str(res.query)
  else:
    queries = connection.queries
    sql = str(queries[-1].get('sql'), 'utf-8')
  print('\033[1;34m' + '=' * len(sql))
  print(sql)
  print('=' * len(sql) + '\033[0m')

以上即为本文介绍的全部内容,希望这些方法能对各位的学习和工作有所帮助。如果有任何疑问或建议,欢迎继续交流探讨。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表