前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django sql log出力:logging:django.db.backends

Django sql log出力:logging:django.db.backends

原创
作者头像
刀枪不入de王二花
修改2022-08-12 13:55:07
3970
修改2022-08-12 13:55:07
举报
文章被收录于专栏:BETTER

项目常用方法2,方法1可用于分析执行速度,执行时间。

1, django_extensions SQL解析

① pip install django-extensions

② INSTALLED_APPS = [

代码语言:txt
复制
'django\_extensions',

]

③ python manage.py shell_plus --print-sql

代码语言:javascript
复制
INSTALLED_APPS = [
    ...
    'django_extensions',       # sql log出力

]
代码语言:javascript
复制
(venv) PS D:\PycharmProjects\pj> python manage.py shell_plus  --print-sql
......
>>> User.objects.only('username','first_name','email')
SELECT "auth_user"."id",
       "auth_user"."username",
       "auth_user"."first_name",
       "auth_user"."email"
  FROM "auth_user"
 LIMIT 21
Execution time: 0.004991s [Database: default]
<QuerySet [<User: purchase007>, <User: purchase001>, <User: purchase005>, <User: purchase008>, <User: purchase004>, <User: purchase006>, <User: admin>, <User: purchase003>, <User: purchase002>]>

2, pj\settings.py:LOGGING > django.db.backends

「django.db.backends」设定,启动website后,执行的sql都会打印到终端

代码语言:python
代码运行次数:0
复制
import os
ROOT_LOG_LEVEL = 'DEBUG' if DEBUG else 'INFO'
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    "formatters": {
        "simple": {
            "format": "%(asctime)s [%(levelname)s] %(message)s"
        },
        "verbose":{
            "format": "%(asctime)s [%(levelname)s] P%(process)d t%(thread)d %(pathname)s:%(lineno)d %(message)s"
        }
    },
    'handlers': {
        'console_simple': {
            'class': 'logging.StreamHandler',
            "formatter": "simple",
        },
        'console_verbose': {
            'class': 'logging.StreamHandler',
            "formatter": "verbose",
        },
    },
    'root': {
        'handlers': ['console_verbose'],
        'level': ROOT_LOG_LEVEL,
    },
    'loggers': {
        'django': {
            'handlers': ['console_verbose'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
            'propagate': False,
        },
        'django.db.backends': {
            'handlers': ['console_verbose'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
            'propagate': False,
        },
    },

上边配置了很多参数,以下为简化版。

代码语言:javascript
复制
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
    },
}

3,django-print-sql 没试,要写入代码,用于解析。写完还得删除。。麻烦

django-print-sql

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1, django_extensions SQL解析
  • 2, pj\settings.py:LOGGING > django.db.backends
  • 3,django-print-sql 没试,要写入代码,用于解析。写完还得删除。。麻烦
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档