关闭sqlalchemy中的警告

2024-04-29 06:15:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我将sqlalchemy与反射一起使用,数据库中的一些部分索引使其转储如下警告:

SAWarning: Predicate of partial index i_some_index ignored during reflection

在我的日志里乱七八糟的。它不会妨碍我的应用程序行为。我希望在开发时保留这些警告,但不在生产级别。有人知道怎么关掉这个吗?


Tags: of数据库应用程序警告indexsqlalchemysome级别
2条回答

Python的warning module提供了一个方便的context manager来捕捉警告。

下面是如何过滤掉SQLAlchemy警告的方法。

import warnings
from sqlalchemy import exc as sa_exc

with warnings.catch_warnings():
    warnings.simplefilter("ignore", category=sa_exc.SAWarning)
    # code here...

至于开发与生产,您可以将此警告包装在应用程序的入口点或在生产环境中调用应用程序的外部脚本中。

通常,我通过一个环境变量来解决这个问题,该环境变量执行的代码路径与开发时略有不同,例如,包装不同的中间件等

警告意味着您执行了表或元数据反射,它正在读取postgresql索引,这些索引具有一些复杂的条件,而SQLAlchemy反射代码不知道如何处理这些条件。这是一个无害的警告,因为是否反映索引不会影响应用程序的操作,除非您希望在另一个数据库上为这些表/索引重新发出CREATE语句。

相关问题 更多 >