SQLAlchemy:无法执行同步规则(多对多关系)

时间:2019-12-15 17:05:22

标签: python sqlalchemy

我正在Sqlalchemy中与“多对多”关系作斗争。 我的数据模型:

  • 一个链条包含一个或多个作业
  • 一份工作可能是一个或多个链条的一部分
class Chain(Base):
    __tablename__ = "chain"
    __table_args__ = {'extend_existing': True}
    __guarded__ = ['id']
    id = Column(Integer, primary_key=True)
    name = Column(Text, nullable=False)
    # .. some other fields

class JobConfig(Base):
    __tablename__ = "jobconfiguration"
    __table_args__ = {'extend_existing': True}
    __guarded__ = ['id']
    chain = relationship("Chain",  secondary='chain_job')

    id = Column(Integer, primary_key=True)
    jobname = Column(String(250).evaluates_none(), nullable=False, unique=True)
    # some other fields

class ChainJob(Base):
    __tablename__ = "chain_job"
    __table_args__ = {'extend_existing': True}
    __guarded__ = ['id']
    id = Column(Integer, primary_key=True)
    chain_id = Column(Integer, ForeignKey('chain.id'))
    job_id = Column(Integer, ForeignKey('jobconfiguration.id'))

现在,当我尝试创建新链并追加新作业时,出现错误消息:

 chain = Chain()
 chain.name='MyFirstChain'
 job = JobConfig()
 job.jobname="PartOfChain1"
 job.chain.append(chain)
 session.add(job)
 session.add(chain)
 session.commit()
  

sqlalchemy.orm.exc.UnmappedColumnError:无法执行以下同步规则   源列“ jobconfiguration.id”;映射器的映射类   JobConfig-> jobconfiguration”不会映射此列。尝试使用   不包含目的地的显式foreign_keys集合   列“ chain_job.job_id”(或使用viewonly = True关系)。

我该如何解决?

0 个答案:

没有答案