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 ('\u5e7f\u5dde', 20)"}, 
 {u'time': u'0.056', u'sql': u"UPDATE `core_province` SET `name` = '\u5e7f\u5dde', `code` = 20 WHERE `core_province`.`id` = 3 "}, 
 {u'time': u'0.102', u'sql': u"INSERT INTO `core_province` (`name`, `code`) VALUES ('\u6cb3\u5357', 371)"}]

從結果中可以看出結果是一個列表(包含了我之前的測試語句)

如果只想拿到最后一條查詢語句可進行切片操作

>>> print connection.queries[-1:]
[{u'time': u'0.102', u'sql': u"INSERT INTO `core_province` (`name`, `code`) VALUES ('\u6cb3\u5357', 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',
        },
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM