すべてのプロダクト
Search
ドキュメントセンター

Tablestore:データの削除

最終更新日:Mar 05, 2025

Tablestore は、単一のデータ行を削除できる DeleteRow 操作と、複数のデータ行を一度に削除できる BatchWriteRow 操作を提供します。

使用上の注意

削除したデータは復元できません。ご注意ください。

前提条件

単一のデータ行の削除

DeleteRow 操作を呼び出すことで、単一のデータ行を削除できます。削除する行が存在しない場合、テーブルは変更されません。

API 操作

"""
説明: この操作は、単一のデータ行を削除します。
table_name: テーブルの名前。
primary_key: 行のプライマリキー。
condition: 操作を実行するために満たす必要がある条件。条件を指定すると、Tablestore は操作を実行する前に、指定された条件が満たされているかどうかを確認します。条件が満たされている場合にのみ、操作が実行されます。 condition パラメーターは、tablestore.metadata.Condition クラスのインスタンスです。
行の有無の条件と列の値に基づく条件がサポートされています。行の有無の条件を指定する場合、ビジネス要件に基づいて condition パラメーターを IGNORE、EXPECT_EXIST、または EXPECT_NOT_EXIST に設定できます。
Response: 操作によって消費された容量単位 (CU) の数と、return_row パラメーターによって示される返される行データ。
consumed: 操作によって消費された CU の数。 consumed パラメーターは、tablestore.metadata.CapacityUnit クラスのインスタンスです。
return_row: 返される行データ。
例:
    primary_key = [('gid',1), ('uid',101)]
    condition = Condition('IGNORE')
    consumed, return_row = client.delete_row('myTable', primary_key, condition)
"""
def delete_row(self, table_name, primary_key, condition, return_type = None, transaction_id = None):

パラメーター

パラメーター

必須

説明

table_name

はい

データテーブルの名前。

primary_key

はい

行のプライマリキー。このパラメーターの値は、各プライマリキー列の名前、タイプ、および値で構成されます。

重要

指定するプライマリキー列の数とタイプは、テーブル内のプライマリキー列の実際の数とタイプと同じである必要があります。

condition

はい

DeleteRow 操作を実行するために構成する条件。行の有無の条件または列の値に基づく条件を構成できます。詳細については、「条件付き更新」をご参照ください。

return_type

いいえ

返されるデータのタイプ。

transaction_id

いいえ

ローカルトランザクションの ID。ローカルトランザクション機能を使用してデータを削除する場合、このパラメーターを構成する必要があります。

次のサンプルコードは、単一のデータ行を削除する方法の例を示しています。

# データテーブルの名前を指定します。
table_name = '<TABLE_NAME>'
# 行のプライマリキーを構築します。
primary_key = [('gid', 1), ('uid', '101')]
row = Row(primary_key)
condition = Condition('IGNORE')
try:
    consumed, return_row = client.delete_row(table_name, row, condition)
    print('Delete succeed, consume %s write cu.' % consumed.write)
# ほとんどの場合、クライアント例外はパラメーターエラーまたはネットワーク例外が原因で発生します。
except OTSClientError as e:
    print("Delete row failed, http_status:%d, error_message:%s" % (e.get_http_status(), e.get_error_message()))
# ほとんどの場合、サーバー例外はパラメーターエラーまたは速度制限エラーが原因で発生します。
except OTSServiceError as e:
    print("Delete row failed, http_status:%d, error_code:%s, error_message:%s, request_id:%s" % (
    e.get_http_status(), e.get_error_code(), e.get_error_message(), e.get_request_id()))

詳細なサンプルコードを表示するには、DeleteRow@GitHub にアクセスしてください。

複数のデータ行の同時削除

  1. ビジネス要件に基づいて適切なメソッドを選択し、削除するデータのプライマリキー情報をクエリします。

    • プライマリキー値が指定された範囲内にあるデータを削除するには、GetRange 操作を呼び出してデータをクエリし、データのプライマリキー情報を取得します。詳細については、「プライマリキー値が特定の範囲内にあるデータの読み取り」をご参照ください。

    • 検索インデックスが作成されたデータテーブルから特定の条件を満たすデータを削除するには、検索インデックスを使用してデータをクエリし、データのプライマリキー情報を取得します。詳細については、「基本的なクエリ」をご参照ください。

    • データテーブルからすべてのデータを削除するには、データテーブルを削除し、同じ構成を持つデータテーブルを作成することをお勧めします。

      また、GetRange 操作を呼び出し、開始プライマリキーを INF_MIN に、終了プライマリキーを INF_MAX に設定して、テーブル内のすべてのデータをスキャンすることもできます。この方法では、テーブル内のすべてのデータのプライマリキー情報を取得できます。ただし、これには大量の計算リソースが消費されます。ご注意ください。

  2. 行のプライマリキー情報に基づいて、BatchWriteRow 操作を呼び出して、複数のデータ行を同時に削除します。詳細については、「複数のデータ行の同時書き込み」をご参照ください。

FAQ

1. Python 用 Tablestore SDK V6.0.0 を使用して単一のデータ行を削除するときにエラーが発生した場合はどうすればよいですか?

次のいずれかの方法を使用してエラーを修正することをお勧めします。

  • Python 用 Tablestore SDK を最新バージョンにアップグレードします。

  • データの削除に使用するメソッドで指定されているパラメーターを変更します。

    # データテーブルの名前を指定します。
    table_name = '<TABLE_NAME>'
    # 行のプライマリキーを構築します。
    primary_key = [('gid', 1), ('uid', '101')]
    condition = Condition('IGNORE')
    try:
        consumed, return_row = client.delete_row(table_name, primary_key, condition)
        print('Delete succeed, consume %s write cu.' % consumed.write)
    # ほとんどの場合、クライアント例外はパラメーターエラーまたはネットワーク例外が原因で発生します。
    except OTSClientError as e:
        print("Delete row failed, http_status:%d, error_message:%s" % (e.get_http_status(), e.get_error_message()))
    # ほとんどの場合、サーバー例外はパラメーターエラーまたは速度制限エラーが原因で発生します。
    except OTSServiceError as e:
        print("Delete row failed, http_status:%d, error_code:%s, error_message:%s, request_id:%s" % (
        e.get_http_status(), e.get_error_code(), e.get_error_message(), e.get_request_id()))

関連情報

Time to live (TTL) は、データの保持期間を指定します。データテーブルに TTL を構成して、期限切れのデータを自動的に削除できます。詳細については、「データバージョンと TTL」をご参照ください。