设置自定义Postgres模式时出现asyncpg数据类型不匹配错误
我正在使用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
)