【问题标题】:psycopg2 shows sensitive infromation in logspsycopg2 在日志中显示敏感信息
【发布时间】:2020-12-02 12:25:13
【问题描述】:

我目前正在使用 psycopg2 连接到 db。如果例如查询失败,我会收到错误消息,其中包含敏感信息所在的整个 sql insert 语句。 有没有办法配置 psycopg2 使其不显示 sql 语句或屏蔽某些字段?

例子:

"ERROR", "message": "(psycopg2.errors.UniqueViolation) duplicate key value violates unique constraint \"pksa_account\"\nDETAIL: Key (b_loadid, customer_account_number)=(xx, xxxx) already exists.\n\n[SQL: INSERT INTO ... ...

在 INSERT INTO 之后是实际的字段和值。

【问题讨论】:

  • 这条消息在哪里显示?
  • db 日志和应用程序日志是一样的,所以我假设 psycopg2 只是将 db 日志转发到应用程序。

标签: python postgresql logging psycopg2


【解决方案1】:

我们使用 sqlalchemy 连接(顺便说一句在后台使用 psycopg2)解决了这个问题,它在创建引擎时提供了配置选项:hide_parameters = True,这就是解决问题所需要的全部。现在我们有漂亮的日志,参数被屏蔽:

DETAIL:  Key (id)=(4) already exists.

[SQL: INSERT INTO xxx.xxx(id, loaddatetime) VALUES (%(id)s, %(loaddatetime)s)]
[SQL parameters hidden due to hide_parameters=True]
(Background on this error at: http://sqlalche.me/e/13/gkpj)```

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多