Psycopg2 错误信息

5 投票
1 回答
7318 浏览
提问于 2025-04-16 21:32

大家好,

我正在把错误信息写入一个日志文件,但这个文件变得越来越大,因为数据库里出现了唯一性约束的错误。这没问题,我其实就是想要这样。我的问题是,怎么才能避免每次出现重复键错误时都把它们写入日志文件呢?

        except Exception as err:
                logger.error('FunctionName: %s',  err)

谢谢,
亚当

1 个回答

8

Psycopg会把PostgreSQL的错误代码和异常一起传递,错误代码存放在一个叫pgcode的属性里。你可以通过这个属性来确认错误是否真的和唯一性冲突有关,这样就可以避免记录这些错误。比如:

try:
    cursor.execute("...")
except psycopg2.IntegrityError as err:
    if err.pgcode != '23505':
        logger.error('FunctionName: %s',  err)
except Exception as err:
    logger.error('FunctionName: %s',  err)

撰写回答