von*_*hev 26 python postgresql sqlalchemy
我正在使用sqlalchemy和反射,我的数据库中的几个部分索引使它转储像这样的警告:
SAWarning: Predicate of partial index i_some_index ignored during reflection
进入我的日志并保持混乱.它不会妨碍我的应用程序行为.我希望在开发过程中保留这些警告,但不是在生产级别.有谁知道如何关闭它?
Mah*_*der 43
Python的警告模块提供了一个方便的上下文管理器,可以为您捕获警告.
以下是过滤SQLAlchemy警告的方法.
import warnings
from sqlalchemy import exc as sa_exc
with warnings.catch_warnings():
warnings.simplefilter("ignore", category=sa_exc.SAWarning)
# code here...
Run Code Online (Sandbox Code Playgroud)
至于开发与生产,您可以在应用程序的入口点或在生产环境中调用应用程序的外部脚本中包含此警告.
通常,我通过使用一个环境变量来解决这个问题,该环境变量执行的代码路径与开发时略有不同,例如,包装不同的中间件等.
警告意味着您执行了表或元数据反射,并且它正在读取postgresql索引,这些索引具有一些SQLAlchemy反射代码不知道如何处理的复杂条件.这是一个无害的警告,因为无论是否反映索引都不会影响应用程序的操作,除非您想为另一个数据库上的那些表/索引重新发出CREATE语句.