:py:mod:`airflow.providers.cloudant.hooks.cloudant`
===================================================

.. py:module:: airflow.providers.cloudant.hooks.cloudant

.. autoapi-nested-parse::

   Hook for Cloudant



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.cloudant.hooks.cloudant.CloudantHook




.. py:class:: CloudantHook(cloudant_conn_id = default_conn_name)

   Bases: :py:obj:`airflow.hooks.base.BaseHook`

   Interact with Cloudant. This class is a thin wrapper around the cloudant python library.

   .. seealso:: the latest documentation `here <https://python-cloudant.readthedocs.io/en/latest/>`_.

   :param cloudant_conn_id: The connection id to authenticate and get a session object from cloudant.

   .. py:attribute:: conn_name_attr
      :annotation: = cloudant_conn_id

      

   .. py:attribute:: default_conn_name
      :annotation: = cloudant_default

      

   .. py:attribute:: conn_type
      :annotation: = cloudant

      

   .. py:attribute:: hook_name
      :annotation: = Cloudant

      

   .. py:method:: get_ui_field_behaviour()
      :staticmethod:

      Returns custom field behaviour


   .. py:method:: get_conn(self)

      Opens a connection to the cloudant service and closes it automatically if used as context manager.

      .. note::
          In the connection form:
          - 'host' equals the 'Account' (optional)
          - 'login' equals the 'Username (or API Key)' (required)
          - 'password' equals the 'Password' (required)

      :return: an authorized cloudant session context manager object.
      :rtype: cloudant



