SQLAlchemy级联删除多对多关系

时间:2015-09-01 11:51:52

标签: python flask sqlalchemy flask-sqlalchemy

我正在尝试使用SQLAlchemy在我的数据库上执行级联删除。我有桌子(删除了不相关的字段):

action_permissions_to_groups = db.Table('action_permissions_to_groups', 
    db.Column('group_id', db.Integer, db.ForeignKey('group.id',  ondelete='cascade')),
    db.Column('action_permission_id', db.Integer, db.ForeignKey('action_permission.id',  ondelete='cascade'))
)

class Group(db.Model, MyModel):
    id = db.Column(db.Integer, primary_key=True)
    action_permissions = db.relationship('ActionPermission', secondary=action_permissions_to_groups, cascade='delete')


class ActionPermission(db.Model, MyModel):
    id = db.Column(db.Integer, primary_key=True)

在英语中,多个Groups有多个ActionPermissions。当我删除Group时,我希望删除action_permissions_to_groups表中与group_id匹配的所有行的所有行。

当我尝试删除一个组时,上面的代码给出了以下错误:

  

InvalidRequestError:由于刷新期间的先前异常,此会话的事务已回滚。要使用此Session开始新事务,请首先发出Session.rollback()。原始异常是:表'action_permissions_to_groups'上的DELETE语句预计会删除11行;只有12人匹配。

有谁知道我做错了什么?

谢谢!

0 个答案:

没有答案