阅读目录
第一种方式:
代码语言:javascript复制>>> 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)"}]
从结果中可以看出结果是一个列表(包含了我之前的测试语句)
如果只想拿到最后一条查询语句可进行切片操作
代码语言:javascript复制>>> 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文件中,在最后复制粘贴如下代码:
代码语言:javascript复制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
1 | 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',
},
}
}