Error in SQLAlchemy – sqlalchemy.orm.exc.StaleDataError
Correcting an error in SQLAlchemy when deleting data: sqlalchemy.orm.exc.StaleDataError.
Error:
raise orm_exc.StaleDataError (
sqlalchemy.orm.exc.StaleDataError: UPDATE statement on table ‘categories’ expected to update 4 row (s); 0 were matched.
Occurs when intersecting db.relationship… When relationships are specified in each other’s models. For example:
__tablename__ = ‘task’
cats = db.relationship(
‘Category’,
secondary=‘categories_task’,
backref=db.backref(‘task’),
)
and
__tablename__ = ‘categories_task’
id = db.Column(db.Integer(), primary_key=True, unique=True)
done_id = db.Column(db.Integer, db.ForeignKey(‘task.id’))
cat_id = db.Column(db.Integer, db.ForeignKey(‘categories.id’))
time_passed = db.Column(db.Integer())
time = db.Column(db.DateTime())
done = db.relationship(Done, backref=“categories_task”)
cat = db.relationship(Category, backref=“categories_task”)
To solve this problem, install passive_deletes = True, i.e .:
cats = db.relationship(
‘Category’,
secondary=‘categories_task’,
backref=db.backref(‘task’),
passive_deletes=True
)