zoukankan      html  css  js  c++  java
  • Django终端打印SQL语句

     第一种方式:

    >>> from core.models import Province
    >>> from django.db import connection
    >>> p = Province(name=u'河南', code='0371')
    >>> p.save()
    >>> print connection.queries
    [{u'time': u'0.439', u'sql': u"INSERT INTO `core_province` (`name`, `code`) VALUES ('u5e7fu5dde', 20)"}, 
     {u'time': u'0.056', u'sql': u"UPDATE `core_province` SET `name` = 'u5e7fu5dde', `code` = 20 WHERE `core_province`.`id` = 3 "}, 
     {u'time': u'0.102', u'sql': u"INSERT INTO `core_province` (`name`, `code`) VALUES ('u6cb3u5357', 371)"}]

    从结果中可以看出结果是一个列表(包含了我之前的测试语句)

    如果只想拿到最后一条查询语句可进行切片操作

    >>> print connection.queries[-1:]
    [{u'time': u'0.102', u'sql': u"INSERT INTO `core_province` (`name`, `code`) VALUES ('u6cb3u5357', 371)"}]

     

    第二种方式:配置在终端中显示sql语句

    在Django项目的settings.py文件中,在最后复制粘贴如下代码:

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

    其实就是为你的Django项目配置上一个名为django.db.backends的logger实例即可查看翻译后的SQL语句。

    提示:如果也想在log文件中输出,可以配置一个hanlder即可

    注意:settings.py 

    DEBUG = True  # 开发环境设置True,线上环境一定要关闭
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'verbose': {
                'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
            },
            'simple': {
                'format': '%(levelname)s %(asctime)s %(module)s %(message)s'
            },
        },
        'handlers': {
            'sql': {
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': os.path.join(BASE_DIR, "sql_info.log"),
                'formatter': 'simple'
            },
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
            }
        },
        'loggers': {
            'django.db.backends': {
                'handlers': ['sql', 'console'],
                'propagate': True,
                'level': 'DEBUG',
            },
        }
    }
  • 相关阅读:
    web图片100%宽度自适应,高度不塌陷
    基于Kafka+ELK搭建海量日志平台
    一句话撸完重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等
    MySQL数据库设计规范
    夺命连环问:一个 TCP 连接可以发多少个 HTTP 请求?
    [Kafka]
    ZooKeeper学习总结 第一篇:ZooKeeper快速入门
    Vue图片浏览组件v-viewer,支持旋转、缩放、翻转等操作
    opencv处理验证码python代码
    mac使用pytesseract
  • 原文地址:https://www.cnblogs.com/fixdq/p/9210647.html
Copyright © 2011-2022 走看看