我有一个连接链,它绑定到我要删除的对象
差不多
JobAlertSubscriber -> JobAlertSubscriberJobs -> Jobs -> JobLikes
// etc...
为了通过db.session.delete()
删除JobAlertSubscriber
,ORM似乎加载了对象的所有关系
这是一个问题,因为我不想加载整个链。我还尝试使用raiseload
不加载链,但在这种情况下,我无法删除任何内容,因为ORM返回给我一个InvalidRequestError
(因为它无法加载要删除的对象的所有属性)
所以我找到了一个解决方案,我用一些noload()
选项切断了这个链条
我的工作如下:
subscriber = JobAlertSubscriber.query.filter(JobAlertSubscriber.id == user_id)\
.options(joinedload(JobAlertSubscriber.job_relation).joinedload(JobAlertSubscriberJob.job).noload(Job.detailed_impressions))\
.options(joinedload(JobAlertSubscriber.job_relation).joinedload(JobAlertSubscriberJob.job).noload(Job.likes))\
.first()
成功删除对象后:
db.session.delete(subscriber)
db.session.commit()
然而,我觉得虽然这个解决方案是可行的,但它并不是最干净的方法。你会怎么做?带有text
的纯SQL调用是解决方案吗
目前没有回答
相关问题 更多 >
编程相关推荐