def _transaction(self): connection = Connection(self.dsn) try: yield connection.cursor() except Connection.Error as e: connection.rollback() raise e else: connection.commit() finally: connection.close()