sql >> Database teknologi >  >> RDS >> Mysql

SQLAlchemy DELETE Fejl forårsaget af at have en både lazy-load OG en dynamisk version af det samme forhold

både Group.users og Group.users_dynamic relationerne forsøger at forene det faktum, at gruppen slettes sammen med at kunne administrere User() objekter de henviser til; et forhold lykkes, mens det andet mislykkes, da rækkerne i tilknytningstabellen allerede var slettet. Den mest ligetil løsning er at markere alle de identiske forhold undtagen én som viewonly:

class Group(Base):
    __tablename__ = 'groups'
    id = Column(Integer, primary_key=True)

    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
    users_dynamic = relationship('User', viewonly=True, secondary=users_groups, lazy='dynamic')

hvis du stadig ønsker at have begge relationer til at håndtere en vis grad af mutationer, skal du gøre dette omhyggeligt, da SQLAlchemy ikke ved, hvordan man koordinerer mellem ændringer i to relationer på samme tid, så konflikter som denne kan fortsætte med at ske (som dobbeltindsættelser osv.), hvis du laver tilsvarende mutationer på begge forhold. For bare at tage hånd om "slet"-problemet i sig selv, kan du også prøve at indstille Group.users_dynamic til passive_deletes=True:

class Group(Base):
    __tablename__ = 'groups'
    id = Column(Integer, primary_key=True)

    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
    users_dynamic = relationship('User', passive_deletes=True, secondary=users_groups, lazy='dynamic')


  1. Er mysql_real_escape_string() brudt?

  2. Identifikation af ASH-sekvenskondition i RAC

  3. Sådan opsætter du en PostgreSQL-database i Django

  4. [Video] Indeksering i PostgreSQL