Tablestore は、単一のデータ行を削除できる DeleteRow 操作と、複数のデータ行を一度に削除できる BatchWriteRow 操作を提供します。
使用上の注意
削除したデータは復元できません。ご注意ください。
前提条件
Tablestore クライアントが初期化されていること。詳細については、「Tablestore クライアントの初期化」をご参照ください。
データテーブルが作成され、テーブルにデータが書き込まれていること。詳細については、「データテーブルの作成」および「データの書き込み」をご参照ください。
単一のデータ行の削除
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 にアクセスしてください。
複数のデータ行の同時削除
ビジネス要件に基づいて適切なメソッドを選択し、削除するデータのプライマリキー情報をクエリします。
プライマリキー値が指定された範囲内にあるデータを削除するには、GetRange 操作を呼び出してデータをクエリし、データのプライマリキー情報を取得します。詳細については、「プライマリキー値が特定の範囲内にあるデータの読み取り」をご参照ください。
検索インデックスが作成されたデータテーブルから特定の条件を満たすデータを削除するには、検索インデックスを使用してデータをクエリし、データのプライマリキー情報を取得します。詳細については、「基本的なクエリ」をご参照ください。
データテーブルからすべてのデータを削除するには、データテーブルを削除し、同じ構成を持つデータテーブルを作成することをお勧めします。
また、GetRange 操作を呼び出し、開始プライマリキーを INF_MIN に、終了プライマリキーを INF_MAX に設定して、テーブル内のすべてのデータをスキャンすることもできます。この方法では、テーブル内のすべてのデータのプライマリキー情報を取得できます。ただし、これには大量の計算リソースが消費されます。ご注意ください。
行のプライマリキー情報に基づいて、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」をご参照ください。