【问题标题】:logging does not show the result of array记录不显示数组的结果
【发布时间】:2016-11-14 06:08:51
【问题描述】:

软件

  • Django 1.9
  • Python 3.4

我做了什么?

我的 views.py 中有以下 Django 代码

from django.db import connection
    cursor = connection.cursor()
    cursor.execute('SELECT p.name, p.name_zh_hans, p.art_number, ....')
    rows = cursor.fetchall()

logger = logging.getLogger(__name__)

for row in rows:
        row_num += 1
        logger.info(row)
        for col_num in range(len(row)):
            ws.write(row_num, col_num, row[col_num], font_style)

我在日志文件中得到了什么?

(0.005) SELECT p.name, p.name_zh_hans, p.art_number, ....; args=None
(0.005) SELECT p.name, p.name_zh_hans, p.art_number, ....; args=None
(0.006) SELECT p.name, p.name_zh_hans, p.art_number, ....; args=None

我期待什么?

在日志文件中显示数组内容

出了什么问题?

【问题讨论】:

  • 您在哪里配置了日志记录?为什么在 Django 中使用纯 SQL?
  • 您能告诉我们您的表中有多少行吗?我需要知道它才能确定我的想法:)

标签: python django logging


【解决方案1】:

您可能需要在调用logging.getLogger(__name__) 之前设置logging.basicConfig(level=logging.INFO)

您可以查看Logging Cookbook 以获取详细指南。

【讨论】:

    【解决方案2】:

    我相信您所看到的实际上是来自 django.db.backends 的日志,请查看 this reference

    与代码与数据库交互相关的消息。为了 例如,请求执行的每个应用程序级 SQL 语句 以 DEBUG 级别记录到此记录器。

    发送至此记录器的消息具有以下额外上下文:

    持续时间:执行 SQL 语句所用的时间。
    sql:SQL 执行的语句。
    params:使用的参数 SQL 调用。

    出于性能原因,仅启用 SQL 日志记录 当 settings.DEBUG 设置为 True 时,无论日志记录级别或 已安装的处理程序。

    此日志记录不包括框架级初始化(例如 SET TIMEZONE)或事务管理查询(例如 BEGIN、COMMIT 和 回滚)。如果您想查看,请打开数据库中的查询日志记录 所有数据库查询。

    您正在使用 log level info 级别进行日志记录,同时 django.db.backendsDEBUG 级别进行日志记录,因此还要检查您的日志处理程序确定您实际记录的内容和未记录的内容:)

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多