我有一个小型数据库,其中有10个表,所有表都与外键(FK)关系链接。其中一些使用联接表继承。所有关系在ORM中都有cascade=all,delete
。所有FK均已编制索引。我使用SQLAlchemy
。
删除对象很长,因为有许多链接的大对象会被级联删除。我有一个基本的UI,在主线程中运行少量操作。我将研究推迟在后台进行删除,并在UI中获得通知。但是:
是否有办法仅删除主对象(快速),然后再推迟删除级联对象(慢),例如整夜或数据库空闲时?这样,从用户角度来看操作看起来会更快?
答案 0 :(得分:1)
根据此处的delete docs。如果您未指定删除级联,则sqlalchemy的默认行为是使孩子的孤儿与父母分离。如果是这种情况,则在外键设置为Null的情况下可以使用,以后您可以运行一个简单的查询,数据库负载较少,可以删除这些孤儿。
this帖子也可以帮助澄清。