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

.. py:module:: airflow.providers.postgres.hooks.postgres


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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.postgres.hooks.postgres.PostgresHook




Attributes
~~~~~~~~~~

.. autoapisummary::

   airflow.providers.postgres.hooks.postgres.CursorType


.. py:data:: CursorType
   

   

.. py:class:: PostgresHook(*args, **kwargs)

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

   Interact with Postgres.

   You can specify ssl parameters in the extra field of your connection
   as ``{"sslmode": "require", "sslcert": "/path/to/cert.pem", etc}``.
   Also you can choose cursor as ``{"cursor": "dictcursor"}``. Refer to the
   psycopg2.extras for more details.

   Note: For Redshift, use keepalives_idle in the extra connection parameters
   and set it to less than 300 seconds.

   Note: For AWS IAM authentication, use iam in the extra connection parameters
   and set it to true. Leave the password field empty. This will use the
   "aws_default" connection to get the temporary token unless you override
   in extras.
   extras example: ``{"iam":true, "aws_conn_id":"my_aws_conn"}``
   For Redshift, also use redshift in the extra connection parameters and
   set it to true. The cluster-identifier is extracted from the beginning of
   the host field, so is optional. It can however be overridden in the extra field.
   extras example: ``{"iam":true, "redshift":true, "cluster-identifier": "my_cluster_id"}``

   :param postgres_conn_id: The :ref:`postgres conn id <howto/connection:postgres>`
       reference to a specific postgres database.

   .. py:attribute:: conn_name_attr
      :annotation: = postgres_conn_id

      

   .. py:attribute:: default_conn_name
      :annotation: = postgres_default

      

   .. py:attribute:: conn_type
      :annotation: = postgres

      

   .. py:attribute:: hook_name
      :annotation: = Postgres

      

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

      

   .. py:method:: get_conn()

      Establishes a connection to a postgres database.


   .. py:method:: copy_expert(sql, filename)

      Executes SQL using psycopg2 copy_expert method.
      Necessary to execute COPY command without access to a superuser.

      Note: if this method is called with a "COPY FROM" statement and
      the specified input file does not exist, it creates an empty
      file and no data is loaded, but the operation succeeds.
      So if users want to be aware when the input file does not exist,
      they have to check its existence by themselves.


   .. py:method:: get_uri()

      Extract the URI from the connection.
      :return: the extracted uri.


   .. py:method:: bulk_load(table, tmp_file)

      Loads a tab-delimited file into a database table


   .. py:method:: bulk_dump(table, tmp_file)

      Dumps a database table into a tab-delimited file


   .. py:method:: get_iam_token(conn)

      Uses AWSHook to retrieve a temporary password to connect to Postgres
      or Redshift. Port is required. If none is provided, default is used for
      each service


   .. py:method:: get_table_primary_key(table, schema = 'public')

      Helper method that returns the table primary key

      :param table: Name of the target table
      :param schema: Name of the target schema, public by default
      :return: Primary key columns list
      :rtype: List[str]



