Mysql
 sql >> база данни >  >> RDS >> Mysql

SQLAlchemy DELETE Грешка, причинена от наличието както на мързеливо натоварване, така и на динамична версия на една и съща връзка

както връзките Group.users, така и Group.users_dynamic се опитват да съгласуват факта, че групата се изтрива заедно с възможността да управляват User() обекти, за които се отнасят; една връзка е успешна, докато втората е неуспешна, тъй като редовете в таблицата на асоциациите вече са изтрити. Най-простото решение е да маркирате всички, освен една от идентичните връзки, като само за преглед:

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')

ако все още искате и двете връзки да се справят с известна степен на мутации, ще трябва да направите това внимателно, тъй като SQLAlchemy не знае как да координира промените в две връзки едновременно, така че конфликти като този могат да продължат се случва (като двойни вмъквания и т.н.), ако направите еквивалентни мутации и в двете връзки. За да се погрижите само за проблема с "изтриването", можете също да опитате да настроите Group.users_dynamic на 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Научете MySQL / MariaDB за начинаещи – част 1

  2. Повторно свързване на MySQL при изчакване

  3. получаване на стойности, които не съществуват в таблицата на mysql

  4. Wordpress SQL:вземете категория на публикациите и тагове

  5. Как да изберете колона ORDER BY и RAND() и двете?