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

.. py:module:: airflow.providers.jdbc.hooks.jdbc


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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.jdbc.hooks.jdbc.JdbcHook




.. py:class:: JdbcHook(*args, schema = None, log_sql = True, **kwargs)

   Bases: :py:obj:`airflow.providers.common.sql.hooks.sql.DbApiHook`

   General hook for jdbc db access.

   JDBC URL, username and password will be taken from the predefined connection.
   Note that the whole JDBC URL must be specified in the "host" field in the DB.
   Raises an airflow error if the given connection id doesn't exist.

   .. py:attribute:: conn_name_attr
      :annotation: = jdbc_conn_id

      

   .. py:attribute:: default_conn_name
      :annotation: = jdbc_default

      

   .. py:attribute:: conn_type
      :annotation: = jdbc

      

   .. py:attribute:: hook_name
      :annotation: = JDBC Connection

      

   .. py:attribute:: supports_autocommit
      :annotation: = True

      

   .. py:method:: get_connection_form_widgets()
      :staticmethod:

      Returns connection widgets to add to connection form


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

      Returns custom field behaviour


   .. py:method:: get_conn()

      Returns a connection object


   .. py:method:: set_autocommit(conn, autocommit)

      Enable or disable autocommit for the given connection.

      :param conn: The connection.
      :param autocommit: The connection's autocommit setting.


   .. py:method:: get_autocommit(conn)

      Get autocommit setting for the provided connection.
      Return True if conn.autocommit is set to True.
      Return False if conn.autocommit is not set or set to False

      :param conn: The connection.
      :return: connection autocommit setting.
      :rtype: bool



