コード例を次に示します。
users_groups = Table('users_groups', Model.metadata,
Column('user_id', Integer, ForeignKey('users.id')),
Column('group_id', Integer, ForeignKey('groups.id'))
)
class User(Model):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
class Group(Model):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
users_dynamic = relationship('User', secondary=users_groups, lazy='dynamic')
したがって、次のように多数のユーザーをグループに追加すると、次のようになります。
g = Group()
g.users = [User(), User(), User()]
session.add(g)
session.commit()
次に、グループを削除しようとします
session.delete(g)
session.commit()
このエラーの何らかの形式が表示されます。
DELETE statement on table 'users_groups' expected to delete 3 row(s); Only 0 were matched.
関係の 2 番目のバージョン (私の場合は動的バージョン) を削除すると、この問題が解決します。なぜこれが起こっているのかを理解するためにどこから始めればよいのかさえわかりません。状況に応じて最も適切なクエリ戦略を簡単に使用できるようにするために、多くの場合、SQLAlchemy モデル全体でさまざまな関係の 2 つのバージョンを使用しています。予期しない問題が発生したのはこれが初めてです。
どんなアドバイスでも大歓迎です。