SQLAlchemy:跳过不支持的基于表达式的索引的反射

SQLAlchemy: Skipped unsupported reflection of expression-based index

我正在尝试编写一个脚本来使用 SQLAlchemy 从现有的 PostgreSQL 数据库中获取某些数据。如果重要的话,所有操作都将是只读的(即只有 SELECT 操作)。

我的理解是,为了使用现有数据库,我需要反映它。

self.engine = create_engine(f"postgresql+psycopg2://{self.conn_str}")
        
self.metadata = MetaData(bind=self.engine)
MetaData.reflect(self.metadata)

当我 运行 这样做时,我收到了来自 MetaData.reflect() 的一堆警告:

SAWarning: Skipped unsupported reflection of expression-based index idx_users_email_lower

我应该以某种方式定义这些索引,还是应该如何处理?如果不支持索引,我的查询会很慢吗?

警告告诉您调用 .get_indexes() 返回的结果将不包括 expression-based 索引。索引仍然存在于数据库中,PostgreSQL 查询解析器在生成执行计划时仍然可以使用它。

只有当 SQLAlchemy 元数据中缺少该索引会影响 SQLAlchemy 发出的 SELECT 语句时,性能才会受到影响。我觉得不太可能。