wiki:SimpleDelete
Warning: Can't synchronize with repository "(default)" (Unsupported version control system "svn": No module named svn). Look in the Trac log for more information.

Version 11 (modified by anonymous, 13 years ago) (diff)

--

The docs clearly show how to insert/update a record, but not how to delete one.

If you have a reference to the object, simply call object.destroySelf() to remove it from the data base, provided it is not a foreign key or has any relationships depending on it.

If you do not have a reference to the object, simply use the delete class method:

class SampleSQLObject(SQLObject):
    # ...
#...
SampleSQLObject.delete(recordId)

If there are dependencies, you will have to delete the dependent records first (if at all.)

If there is a better way to do this, please update.

The way to cascade deletes is like this:

class Student(SQLObject):
    grade = sqlobject.ForeignKey('Grade', cascade=True)
class Grade(SQLObject):
    pass

Grade.delete(someid)

-Jerub


It is better to use the "destroySelf" method instead of the delete method. So, you end up with:

student = Student.get(someid)
student.destroySelf()

- Jorge Godoy


How do I go about deleting a bunch of related items?

I have a User and he has Items, I want to delete the User with his Items. Right now I go around and loop on the user.items and .destroySelf them, but that's inefficient SQL. I could just do "DELETE FROM item WHERE item.userID = x". Is there anyway to achieve it with SQLObject?