Tablestore は、1 つのデータ行を削除できる DeleteRow 操作と、一度に複数のデータ行を削除できる BatchWriteRow 操作を提供します。
使用上の注意
削除したデータは復元できません。ご注意ください。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化 を参照してください。
データテーブルが作成され、テーブルにデータが書き込まれていること。詳細については、データテーブルの作成 および データの書き込み を参照してください。
1 つのデータ行を削除する
DeleteRow 操作を呼び出すことで、1 つのデータ行を削除できます。削除しようとする行が存在しない場合、テーブルは変更されません。
API 操作
"""
説明: この操作は、1 つのデータ行を削除します。
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。ローカルトランザクション機能を使用してデータを削除する場合は、このパラメータを構成する必要があります。 |
例
次のサンプルコードは、1 つのデータ行を削除する方法の例を示しています。
# データテーブルの名前を指定します。
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('削除成功、消費書き込み CU: %s' % consumed.write)
# ほとんどの場合、クライアント例外はパラメータエラーまたはネットワーク例外が原因です。
except OTSClientError as e:
print("行の削除に失敗しました。http_status:%d、error_message:%s" % (e.get_http_status(), e.get_error_message()))
# ほとんどの場合、サーバー例外はパラメータエラーまたはスロットリングエラーが原因です。
except OTSServiceError as e:
print("行の削除に失敗しました。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 操作を呼び出してデータを照会し、データのプライマリキー情報を取得します。詳細については、プライマリキー値が特定の範囲内にあるデータを読み取る を参照してください。
指定された条件を満たすデータを削除するには、検索インデックスを使用してデータを照会します。次に、データのプライマリキー情報を取得します。詳細については、検索インデックスの作成 および Tablestore SDK の使用 を参照してください。
行のプライマリキー情報に基づいて、BatchWriteRow 操作を呼び出して、複数のデータ行を同時に削除します。詳細については、複数のデータ行を同時に書き込む を参照してください。
FAQ
Python SDK V6.0.0 を使用して 1 つのデータ行を削除しようとすると、サンプルコードでエラーが発生した場合はどうすればよいですか?
次のいずれかの方法で問題を解決することをお勧めします。
Python SDK for Tablestore を最新バージョンにアップグレードします。
データの削除に使用するメソッドで指定されているパラメータを変更します。
# データテーブルの名前を指定します。 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('削除成功、消費書き込み CU: %s' % consumed.write) # ほとんどの場合、クライアント例外はパラメータエラーまたはネットワーク例外が原因です。 except OTSClientError as e: print("行の削除に失敗しました。http_status:%d、error_message:%s" % (e.get_http_status(), e.get_error_message())) # ほとんどの場合、サーバー例外はパラメータエラーまたはスロットリングエラーが原因です。 except OTSServiceError as e: print("行の削除に失敗しました。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 を参照してください。