设置自定义Postgres模式时出现asyncpg数据类型不匹配错误

0 投票
1 回答
22 浏览
提问于 2025-04-14 18:12

我正在使用SQLAlchemy和asyncpg,并且定义了几个模型,使用的是Pydantic。

我有一个名为PanAcquisition的Pydantic模型:

class PanAcquisition(Base):
    __tablename__ = "pan_acquisition"

    acquisition_id = Column(Integer, primary_key=True)
    time_started = Column(
        DateTime(timezone=True), server_default=func.now(), nullable=False, index=True
    )
    last_access = Column(
        DateTime(timezone=True), server_default=func.now(), nullable=False, index=True
    )

    acquisition_source = Column(
        ENUM(ApplicationSource), nullable=False, index=True
    )

在运行测试时,我使用了一个不同的模式“test”,但我遇到了这个错误:

sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) <class 'asyncpg.exceptions.DatatypeMismatchError'>: column "acquisition_source" is of type test.applicationsource but expression is of type applicationsource
E                   HINT:  You will need to rewrite or cast the expression.

我不知道如何为枚举指定数据库模式。

1 个回答

0

解决办法是要在枚举中指定模式

class PanAcquisition(Base):
    __tablename__ = "pan_acquisition"
    ...

    acquisition_source = Column(
        ENUM(ApplicationSource, schema=db_config.db_schema), nullable=False, index=True
    )

撰写回答