4、delete-orphan级联

delete-orphan级联是指当子对象不再与任何父对象关联时,会自动将该子对象删除。设置父表与子表的relationship中的cascade包含“delete-orphan”:

students=relationship("Student",backref="class",cascade="delete-orphan")

通过如下代码将于班级“五年一班”关联的学生全部脱离:

class_=session.query(Class).filter(name="五年二班").first()
unattachedStudent=[]
while len(class_.students)>0:
    unattachedStudent.append(class_.students.pop()) #与父对象脱离
session.commit    #显示地提交事务

上述代码中没有显示地删除任何学生,但由于使用了delete-orphan级联,所以被脱离出班级对象的学生会在session事务提交时会自动从数据库中删除。代码执行后数据库表中的内容的变化:

class表:

class_id name level address
3 五年二班 5 理想路520号3楼

student表:

student_id class_id name age gender address contactor
1 NULL 理想 10 静安区 Null
2 NULL mark 10 静安区 Null
3 NULL 小马哥 9 闸口区 张三
7 NULL 韩永跃 10 静安区 NULL

results matching ""

    No results matching ""