That looks actually more like a use case for a context manager, i.e.
with transactional as transaction:
# do something
It's pretty clear at the call site what is and what isn't transactional and most importantly is practically the pythonic way of writing code with guaranteed cleanup.