class DatabaseConnection:
# Database interface
- def cursor (self):
+ def cursor(self):
"Returns a cursor object and starts a new transaction"
- def commit (self):
+ def commit(self):
"Commits current transaction"
- def rollback (self):
+ def rollback(self):
"Rolls back current transaction"
The :meth:`__enter__` method is pretty easy, having only to start a new
class DatabaseConnection:
...
- def __enter__ (self):
+ def __enter__(self):
# Code to start a new transaction
cursor = self.cursor()
return cursor
class DatabaseConnection:
...
- def __exit__ (self, type, value, tb):
+ def __exit__(self, type, value, tb):
if tb is None:
# No exception, so commit
self.commit()
from contextlib import contextmanager
@contextmanager
- def db_transaction (connection):
+ def db_transaction(connection):
cursor = connection.cursor()
try:
yield cursor