Google Cloud Spanner Operator

先決條件任務

要使用這些 operator,您必須完成一些步驟

SpannerDeployInstanceOperator

建立新的 Cloud Spanner 例項,或者如果指定專案中已存在具有相同例項 ID 的例項,則更新該 Cloud Spanner 例項。

有關引數定義,請參閱 SpannerDeployInstanceOperator

使用 operator

您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體

tests/system/google/cloud/spanner/example_spanner.py

spanner_instance_create_task = SpannerDeployInstanceOperator(
    project_id=PROJECT_ID,
    instance_id=GCP_SPANNER_INSTANCE_ID,
    configuration_name=GCP_SPANNER_CONFIG_NAME,
    node_count=GCP_SPANNER_NODE_COUNT,
    display_name=GCP_SPANNER_DISPLAY_NAME,
    task_id="spanner_instance_create_task",
)
spanner_instance_update_task = SpannerDeployInstanceOperator(
    instance_id=GCP_SPANNER_INSTANCE_ID,
    configuration_name=GCP_SPANNER_CONFIG_NAME,
    node_count=GCP_SPANNER_NODE_COUNT + 1,
    display_name=GCP_SPANNER_DISPLAY_NAME + "_updated",
    task_id="spanner_instance_update_task",
)

模板化

template_fields: Sequence[str] = (
    "project_id",
    "instance_id",
    "configuration_name",
    "display_name",
    "gcp_conn_id",
    "impersonation_chain",
)

更多資訊

請參閱 Google Cloud Spanner API 文件以建立新例項

SpannerDeleteDatabaseInstanceOperator

從指定的 Cloud Spanner 例項中刪除資料庫。如果資料庫不存在,則不執行任何操作,operator 將成功完成。

有關引數定義,請參閱 SpannerDeleteDatabaseInstanceOperator

使用 operator

您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體

tests/system/google/cloud/spanner/example_spanner.py

spanner_database_delete_task = SpannerDeleteDatabaseInstanceOperator(
    instance_id=GCP_SPANNER_INSTANCE_ID,
    database_id=GCP_SPANNER_DATABASE_ID,
    task_id="spanner_database_delete_task",
)

模板化

template_fields: Sequence[str] = (
    "project_id",
    "instance_id",
    "gcp_conn_id",
    "impersonation_chain",
)

更多資訊

請參閱 Google Cloud Spanner API 文件以刪除資料庫例項

SpannerDeployDatabaseInstanceOperator

在指定的例項中建立新的 Cloud Spanner 資料庫,或者如果所需資料庫已存在,則假定成功,並且不更改資料庫配置。不對資料庫結構進行驗證 - 只要資料庫以相同的名稱存在即可。

有關引數定義,請參閱 SpannerDeployDatabaseInstanceOperator

使用 operator

您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體

tests/system/google/cloud/spanner/example_spanner.py

spanner_database_deploy_task = SpannerDeployDatabaseInstanceOperator(
    instance_id=GCP_SPANNER_INSTANCE_ID,
    database_id=GCP_SPANNER_DATABASE_ID,
    ddl_statements=[
        "CREATE TABLE my_table1 (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
        "CREATE TABLE my_table2 (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
    ],
    task_id="spanner_database_deploy_task",
)

模板化

template_fields: Sequence[str] = (
    "project_id",
    "instance_id",
    "database_id",
    "ddl_statements",
    "gcp_conn_id",
    "impersonation_chain",
)
template_ext: Sequence[str] = (".sql",)
template_fields_renderers = {"ddl_statements": "sql"}

更多資訊

請參閱 Google Cloud Spanner API 文件以建立新資料庫

SpannerUpdateDatabaseInstanceOperator

在 Cloud Spanner 資料庫中執行 DDL 查詢,允許您修改現有資料庫的結構。

您可以選擇指定 operation_id 引數,這有助於確定在 update_database 呼叫被重放時語句是否已執行(冪等性檢查)。operation_id 在資料庫中必須唯一,並且必須是有效的識別符號:[a-z][a-z0-9_]*。更多資訊可以在 updateDdl API 文件中找到

有關引數定義,請參閱 SpannerUpdateDatabaseInstanceOperator

使用 operator

您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體

tests/system/google/cloud/spanner/example_spanner.py

spanner_database_update_task = SpannerUpdateDatabaseInstanceOperator(
    instance_id=GCP_SPANNER_INSTANCE_ID,
    database_id=GCP_SPANNER_DATABASE_ID,
    ddl_statements=[
        "CREATE TABLE my_table3 (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
    ],
    task_id="spanner_database_update_task",
)

tests/system/google/cloud/spanner/example_spanner.py

spanner_database_update_idempotent1_task = SpannerUpdateDatabaseInstanceOperator(
    project_id=PROJECT_ID,
    instance_id=GCP_SPANNER_INSTANCE_ID,
    database_id=GCP_SPANNER_DATABASE_ID,
    operation_id=OPERATION_ID,
    ddl_statements=[
        "CREATE TABLE my_table_unique (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
    ],
    task_id="spanner_database_update_idempotent1_task",
)
spanner_database_update_idempotent2_task = SpannerUpdateDatabaseInstanceOperator(
    instance_id=GCP_SPANNER_INSTANCE_ID,
    database_id=GCP_SPANNER_DATABASE_ID,
    operation_id=OPERATION_ID,
    ddl_statements=[
        "CREATE TABLE my_table_unique (id INT64, name STRING(MAX)) PRIMARY KEY (id)",
    ],
    task_id="spanner_database_update_idempotent2_task",
)

模板化

template_fields: Sequence[str] = (
    "project_id",
    "instance_id",
    "database_id",
    "ddl_statements",
    "gcp_conn_id",
    "impersonation_chain",
)
template_ext: Sequence[str] = (".sql",)
template_fields_renderers = {"ddl_statements": "sql"}

更多資訊

請參閱 Google Cloud Spanner API 文件瞭解資料庫 update_ddl

SpannerQueryDatabaseInstanceOperator

執行任意 DML 查詢(INSERT, UPDATE, DELETE)。

有關引數定義,請參閱 SpannerQueryDatabaseInstanceOperator

使用 operator

您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體

tests/system/google/cloud/spanner/example_spanner.py

spanner_instance_query_task = SpannerQueryDatabaseInstanceOperator(
    instance_id=GCP_SPANNER_INSTANCE_ID,
    database_id=GCP_SPANNER_DATABASE_ID,
    query=["DELETE FROM my_table2 WHERE true"],
    task_id="spanner_instance_query_task",
)

模板化

template_fields: Sequence[str] = (
    "project_id",
    "instance_id",
    "database_id",
    "query",
    "gcp_conn_id",
    "impersonation_chain",
)
template_ext: Sequence[str] = (".sql",)
template_fields_renderers = {"query": "sql"}

更多資訊

有關 DML 語法的更多資訊,請參閱 Google Cloud Spanner API 文件。

SpannerDeleteInstanceOperator

刪除 Cloud Spanner 例項。如果例項不存在,則不執行任何操作,operator 將成功完成。

有關引數定義,請參閱 SpannerDeleteInstanceOperator

使用 operator

您可以建立帶或不帶專案 ID 的 operator。如果缺少專案 ID,將從使用的 Google Cloud 連線中檢索。以下顯示了兩種變體

tests/system/google/cloud/spanner/example_spanner.py

spanner_instance_delete_task = SpannerDeleteInstanceOperator(
    instance_id=GCP_SPANNER_INSTANCE_ID, task_id="spanner_instance_delete_task"
)

模板化

template_fields: Sequence[str] = (
    "project_id",
    "instance_id",
    "gcp_conn_id",
    "impersonation_chain",
)

更多資訊

請參閱 Google Cloud Spanner API 文件以刪除例項

參考

更多資訊,請參閱

此條目有幫助嗎?