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 语句时,性能才会受到影响。我觉得不太可能。
我正在尝试编写一个脚本来使用 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 语句时,性能才会受到影响。我觉得不太可能。