1

I created two models for my application with SQLAlchemy, but while using it i receive this error message:

 sqlalchemy.exc.CircularDependencyError: Circular dependency detected. (ProcessState(ManyToOneDP(PlayerModel.clan), <PlayerModel at 0x7f9503070ac8>, delete=False), ProcessState(ManyToOneDP(ClanModel.commander), <ClanModel at 0x7f95030b8da0>, delete=False), ProcessState(OneToManyDP(ClanModel.players), <ClanModel at 0x7f95030b8da0>, delete=False), SaveUpdateState(<PlayerModel at 0x7f9503070ac8>), SaveUpdateState(<ClanModel at 0x7f95030b8da0>), ProcessState(ManyToOneDP(ClanModel.owner), <ClanModel at 0x7f95030b8da0>, delete=False))

How can I fix this error?

class PlayerModel(Base):
    __tablename__ = 'player'

    chat_id = Column(Integer, primary_key=True)

    clan_id = Column(Integer, ForeignKey('clan.id'))
    clan = relationship("ClanModel", foreign_keys='PlayerModel.clan_id', back_populates="players", primaryjoin="PlayerModel.clan_id==ClanModel.id")

    def __repr__(self):
        return "<User(name='{}',level={})>".format(self.name, self.level)


class ClanModel(Base):
    __tablename__ = 'clan'

    id = Column(Integer, primary_key=True)
    war_with_id = Column(Integer, ForeignKey('clan.id'))
    war_with_from = relationship(
        'ClanModel',
        uselist=False,
        remote_side=[id],
        backref=backref('war_with_to', uselist=False),
    )

    owner_id = Column(Integer, ForeignKey('player.chat_id'))
    owner = relationship("PlayerModel", uselist=False, foreign_keys=owner_id)

    commander_id = Column(Integer, ForeignKey('player.chat_id'))
    commander = relationship("PlayerModel", uselist=False, foreign_keys=commander_id)

    players = relationship("PlayerModel", back_populates="clan", foreign_keys=PlayerModel.clan_id)
COUNTERKILL
  • 173
  • 10
  • 1
    Possible duplicate of [sqlalchemy.exc.CircularDependencyError: Circular dependency detected](https://stackoverflow.com/questions/18284464/sqlalchemy-exc-circulardependencyerror-circular-dependency-detected) – univerio Aug 03 '17 at 07:28

0 Answers0