Django: Debugging

22nd April 2021 at 12:55pm
Django

使用 ORM 时的 SQL 性能问题

SQL 查询数据缓慢,有可能是几个原因:

  • 数据库表缺乏一些必要的索引
  • Django ORM 生成的 SQL 不够好
  • 没有正确地使用 Django ORM

调试思路主要是将 Django ORM 生成的原始 SQL 显示出来,再进行分析。显示原始 SQL 的方法有:

  • 使用 Django Debug Toolbar / Django Debug Panel
  • 使用 Django Extensions 的 shell_plus
  • 在 Django 的 logging 配置里,将 django.db 配置为 logger,并使用 DEBUG 的 log level
  • 使用 django.db.connections 提供的原始信息

处理抛异常

Django 的异常信息页面已经提供了非常详细的信息,对农副产品问题很有帮助。同时你可以使用 Django Extensions 中提供的 runserver_plus 命令,使 Werkzeug 内嵌到 Django 的内置服务器中,这样可以在抛异常时的每一帧函数上做调试。