:py:mod:`airflow.providers.google.cloud.hooks.spanner`
======================================================

.. py:module:: airflow.providers.google.cloud.hooks.spanner

.. autoapi-nested-parse::

   This module contains a Google Cloud Spanner Hook.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.hooks.spanner.SpannerHook




.. py:class:: SpannerHook(gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None)

   Bases: :py:obj:`airflow.providers.google.common.hooks.base_google.GoogleBaseHook`

   Hook for Google Cloud Spanner APIs.

   All the methods in the hook where project_id is used must be called with
   keyword arguments rather than positional.

   .. py:method:: get_instance(instance_id, project_id)

      Gets information about a particular instance.

      :param project_id: Optional, The ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :param instance_id: The ID of the Cloud Spanner instance.
      :return: Spanner instance
      :rtype: google.cloud.spanner_v1.instance.Instance


   .. py:method:: create_instance(instance_id, configuration_name, node_count, display_name, project_id)

      Creates a new Cloud Spanner instance.

      :param instance_id: The ID of the Cloud Spanner instance.
      :param configuration_name: The name of the instance configuration defining how the
          instance will be created. Possible configuration values can be retrieved via
          https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instanceConfigs/list
      :param node_count: (Optional) The number of nodes allocated to the Cloud Spanner
          instance.
      :param display_name: (Optional) The display name for the instance in the Google Cloud Console.
          Must be between 4 and 30 characters. If this value is not passed, the name falls back
          to the instance ID.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :return: None


   .. py:method:: update_instance(instance_id, configuration_name, node_count, display_name, project_id)

      Updates an existing Cloud Spanner instance.

      :param instance_id: The ID of the Cloud Spanner instance.
      :param configuration_name: The name of the instance configuration defining how the
          instance will be created. Possible configuration values can be retrieved via
          https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instanceConfigs/list
      :param node_count: (Optional) The number of nodes allocated to the Cloud Spanner
          instance.
      :param display_name: (Optional) The display name for the instance in the Google Cloud
          Console. Must be between 4 and 30 characters. If this value is not set in
          the constructor, the name falls back to the instance ID.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :return: None


   .. py:method:: delete_instance(instance_id, project_id)

      Deletes an existing Cloud Spanner instance.

      :param instance_id: The ID of the Cloud Spanner instance.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :return: None


   .. py:method:: get_database(instance_id, database_id, project_id)

      Retrieves a database in Cloud Spanner. If the database does not exist
      in the specified instance, it returns None.

      :param instance_id: The ID of the Cloud Spanner instance.
      :param database_id: The ID of the database in Cloud Spanner.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :return: Database object or None if database does not exist
      :rtype: google.cloud.spanner_v1.database.Database or None


   .. py:method:: create_database(instance_id, database_id, ddl_statements, project_id)

      Creates a new database in Cloud Spanner.

      :param instance_id: The ID of the Cloud Spanner instance.
      :param database_id: The ID of the database to create in Cloud Spanner.
      :param ddl_statements: The string list containing DDL for the new database.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :return: None


   .. py:method:: update_database(instance_id, database_id, ddl_statements, project_id, operation_id = None)

      Updates DDL of a database in Cloud Spanner.

      :param instance_id: The ID of the Cloud Spanner instance.
      :param database_id: The ID of the database in Cloud Spanner.
      :param ddl_statements: The string list containing DDL for the new database.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :param operation_id: (Optional) The unique per database operation ID that can be
          specified to implement idempotency check.
      :return: None


   .. py:method:: delete_database(instance_id, database_id, project_id)

      Drops a database in Cloud Spanner.

      :param instance_id: The ID of the Cloud Spanner instance.
      :param database_id: The ID of the database in Cloud Spanner.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.
      :return: True if everything succeeded
      :rtype: bool


   .. py:method:: execute_dml(instance_id, database_id, queries, project_id)

      Executes an arbitrary DML query (INSERT, UPDATE, DELETE).

      :param instance_id: The ID of the Cloud Spanner instance.
      :param database_id: The ID of the database in Cloud Spanner.
      :param queries: The queries to execute.
      :param project_id: Optional, the ID of the Google Cloud project that owns the Cloud Spanner
          database. If set to None or missing, the default project_id from the Google Cloud connection
          is used.



