transaction context manager does not raise the exception.
Thank you :)

The **exit** function in the context manager should reraise the exception so that it may be caught outside of the with statement rather than being eaten up.

```
def __exit__(self, exc_type, exc_val, exc_tb):
    if exc_type:
        self.db.rollback()
        self.db.set_autocommit(self._orig)
        return False # This is necessary for python to reraise the exception (it must be false not the implicit None). Otherwise, python will eat up the exception.
    else:
        self.db.commit()
        self.db.set_autocommit(self._orig)
```
