sql >> データベース >  >> RDS >> Mysql

SQLAlchemyDELETE同じ関係の遅延ロードと動的バージョンの両方が原因でエラーが発生しました

    Group.usersとGroup.users_dynamicの両方の関係が、グループが削除されているという事実と、User()を管理できることを調整しようとしています。 それらが参照するオブジェクト。関連付けテーブルの行がすでに削除されているため、1つの関係は成功し、2番目の関係は失敗します。最も簡単な解決策は、1つを除くすべての同一の関係を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')
    

    それでも両方の関係にある程度の突然変異を処理させたい場合は、SQLAlchemyが2つの関係の変更を同時に調整する方法を知らないため、これを慎重に行う必要があります。そのため、このような競合は継続する可能性があります。両方の関係で同等のミューテーションを行うと(二重挿入など)発生します。 「削除」の問題を単独で処理するには、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. SQLServerへの接続の確立中にエラーが発生しました

    2. バイナリとしてのUUIDの挿入と選択(16)

    3. Postgresql column=arrayである行を選択します

    4. PostgreSQLのすべてのデータベースのサイズを取得する(psql)