Updating
========

To update an entity, you must create an updated request, set properties to the
values you want and execute the request. The library will send an HTTP PATCH
request to the remote service.

.. code-block:: python

    import pyodata
    import requests

    SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/'

    northwind = pyodata.Client(SERVICE_URL, requests.Session())

    update_request = northwind.entity_sets.Customers.update_entity(CustomerID='ALFKI')
    update_request.set(CompanyName='Alfons Kitten')
    update_request.execute()


In the case the service you are dealing with requires PUT method, you have two options.

The first option allows you to change the used HTTP method for a single call via
the key word parameter *method* of the method *update_entity*.

.. code-block:: python

    update_request = northwind.entity_sets.Customers.update_entity(CustomerID='ALFKI', method='PUT')

If you need to run more update requests for different entity sets and all of them must be *PUT*,
then you can consider setting the default service's update method to *PUT*.

.. code-block:: python

    northwind.config['http']['update_method'] = 'PUT'

Encode OData URL Path
-------------------------------------------

By default the resource paths of requests are percent encoded. However if this is not what your API expects, 
you can disable the encoding with the variable encode_path by setting it to False.


.. code-block:: python

    update_request = northwind.entity_sets.Customers.update_entity(CustomerID='ALFKI', encode_path=False)