def increment_counter(self, id, counter_name, increment=1,
                          id_name='id', **kwargs):
        """
        Atomically increments a counter attribute in the item identified by
        ``id``.  You must specify the name of the attribute as ``counter_name``
        and, optionally, the ``increment`` which defaults to ``1``.
        """
        response = self._new_response()
        if self._check_supported_op('increment_counter', response):
            params = {
                'Key': {id_name: id},
                'UpdateExpression': 'set #ctr = #ctr + :val',
                'ExpressionAttributeNames': {"#ctr": counter_name},
                'ExpressionAttributeValues': {
                    ':val': decimal.Decimal(increment)},
                'ReturnValues': 'UPDATED_NEW'
            }
            self._call_ddb_method(self.table.update_item, params, response)
            if response.status == 'success':
                if 'Attributes' in response.raw_response:
                    self._replace_decimals(response.raw_response)
                    attr = response.raw_response['Attributes'][counter_name]
                    response.data = attr
        response.prepare()
        return response
def increment_counter ( self , id , counter_name , increment = 1 , id_name = 'id' , ** kwargs ) : response = self . _new_response ( ) if self . _check_supported_op ( 'increment_counter' , response ) : params = { 'Key' : { id_name : id } , 'UpdateExpression' : 'set #ctr = #ctr + :val' , 'ExpressionAttributeNames' : { "#ctr" : counter_name } , 'ExpressionAttributeValues' : { ':val' : decimal . Decimal ( increment ) } , 'ReturnValues' : 'UPDATED_NEW' } self . _call_ddb_method ( self . table . update_item , params , response ) if response . status == 'success' : if 'Attributes' in response . raw_response : self . _replace_decimals ( response . raw_response ) attr = response . raw_response [ 'Attributes' ] [ counter_name ] response . data = attr response . prepare ( ) return response
Atomically increments a counter attribute in the item identified by
        ``id``.  You must specify the name of the attribute as ``counter_name``
        and, optionally, the ``increment`` which defaults to ``1``.