You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polars.read_database()指定schema_overrides包含Enum类型时读取失败的问题求助

Polars.read_database()指定schema_overrides包含Enum类型时读取失败的问题求助

大家好,我遇到了一个Polars读取数据库时的问题,想请教一下各位:

我用CockroachDB(兼容PostgreSQL)建了一个带Python原生Enum类型列的表,用Polars的pl.read_database()方法读取数据。当让Polars自动推断schema时(也就是不指定schema_overrides),读取是成功的,但因为生产环境下表可能为空,必须手动指定schema,这时候调用就报错了。

下面是我的最小复现代码:

# 导入依赖
import enum
import polars as pl
from sqlalchemy import Enum, Column
from sqlmodel import SQLModel, create_engine, insert, select, Field
# 定义Python原生Enum
class CompassEnum(enum.Enum):
    NORTH = 'N'
    EAST = 'E'
    SOUTH = 'S'
    WEST = 'W'

# 定义SQLModel表模型
class Compass(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    compass_direction: CompassEnum = Field(
        sa_column=Column(
            Enum(CompassEnum),
            default=None,
            nullable=False,
            index=False
        )
    )
# 初始化数据库连接(替换为实际连接串)
ENGINE = create_engine('my_connection', echo=True)
SQLModel.metadata.create_all(ENGINE)

# 插入一条测试数据
statement = insert(Compass).values(compass_direction='NORTH')
conn = ENGINE.connect()
conn.execute(statement)
conn.commit()
conn.close()
# 构建查询语句
query = select(Compass.id, Compass.compass_direction)
# 定义要覆盖的schema
schema = {'id': pl.String, 'compass_direction': pl.Enum(CompassEnum)}

# 这个能正常运行:依赖自动推断schema
df_one = pl.read_database(query, ENGINE, infer_schema_length=1000)
print(df_one)

# 这个会报错:指定schema_overrides
df_two = pl.read_database(query, ENGINE, schema_overrides=schema)
print(df_two)

报错信息如下:

ComputeError: could not append value: CompassEnum.NORTH of type: object to the builder; make sure that all rows have the same schema or consider increasing infer_schema_length

注意看,当让Polars自动推断schema时读取成功,但指定schema_overrides后就抛出了上面的错误。我必须指定schema,因为生产环境中这个表可能是空的,自动推断会失效。

我的环境版本:

  • polars==1.25.2
  • Python 3.11.4
  • 数据库:CockroachDB(兼容PostgreSQL)

有没有办法让Polars在指定schema_overrides包含Enum类型时正常读取数据呢?或者有没有其他靠谱的方案能处理空表时的schema指定问题?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 09:54:28