步骤1:检查是否在db中创建了表。顺便说一句,您是如何创建这些表的?你有运行metadata.create_all()方法吗?
步骤2:尝试将架构名称添加到ForeignKey定义中:
Base = declarative_base()
SCHEMA = {'schema' : 'SIATDESV'}
class Pgdasd(Base):
__tablename__ = 'PGDASD'
__table_args__ = SCHEMA
PGDASD_00000_ID_DECLARACAO = Column(String(17), primary_key = True)
class Pgdasd_01000(Base):
__tablename__ = 'pgdasd_01000'
__table_args__ = SCHEMA
PGDASD_00000_ID_DECLARACAO = Column(String, ForeignKey('SIATDESV.PGDASD.PGDASD_00000_ID_DECLARACAO'))
PGDASD_01000_NRPAGTO = Column(String, primary_key = True)
如果这样可以帮助您,还可以使代码使用模式值来避免对模式进行硬编码。
PGDASD_00000_ID_DECLARACAO = Column(String, ForeignKey(SCHEMA['schema']+'.PGDASD.PGDASD_00000_ID_DECLARACAO'))
PS:无论如何,检查SQLAlchemy日志总是有用的,它会生成什么SQL查询。