Add "commit" argument to Base model delete()

In case we want to bundle db actions into a single transaction, we
can now use delete(commit=False) to prevent the transaction from being
committed immediately. This is useful when e.g. deleting a User() and
thousands of his MediaEntries in a single commit.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
Elrond 2012-11-28 13:50:31 +01:00 committed by Sebastian Spaeth
parent fa2f6ba162
commit 329e39034b

View File

@ -79,11 +79,13 @@ class GMGTableBase(object):
sess.add(self)
sess.commit()
def delete(self):
def delete(self, commit=True):
"""Delete the object and commit the change immediately by default"""
sess = object_session(self)
assert sess is not None, "Not going to delete detached %r" % self
sess.delete(self)
sess.commit()
if commit:
sess.commit()
Base = declarative_base(cls=GMGTableBase)