我使用 sqlalchemy 挂钩来检查用户对某些操作的权限(例如查询或将数据插入数据库)。
为了防止保存无法访问的记录,我设置了钩子 before_commit,它获取了一个会话对象。我想获取所有实例,这应该由这个提交执行以检查这个实例是否被保存(并删除错误的记录)。
对于添加新记录,它通过 after_attach 和 before_commit 起作用(由于某种原因,在 after_attach 内部删除不起作用)。但是在查询->更新->提交实例的情况下 after_attach 没有调用,所以所有权限检查都应该移到 before_commit 中。