Python SDK を使用して、1 つまたは複数の Tablestore テーブルからデータをバッチで読み取ります。
注意事項
各バッチ取得操作では、最大 100 行のデータを取得できます。
前提条件
メソッド
def batch_get_row(self, request)
サンプルコード
以下のコードは、test_table テーブルからプライマリキー値 row1 および row2 を持つ 2 行のデータを読み取ります。
try:
primary_keys = []
# 最初の行のプライマリキーを追加します。
primary_keys.append([('id', 'row1')])
# 2 行目のプライマリキーを追加します。
primary_keys.append([('id', 'row2')])
# クエリ条件を構築します。
batchGetRowItem = TableInBatchGetRowItem('test_table', primary_keys=primary_keys, max_version=1)
# バッチ取得操作を実行するために batch_get_row メソッドを呼び出します。
request = BatchGetRowRequest()
request.add(batchGetRowItem)
response = client.batch_get_row(request)
# 応答を処理します。
print('* 全て成功しました: %s' % response.is_all_succeed())
print('* 成功した行: ')
for succeed in response.get_succeed_rows():
if succeed.row is not None:
print('table_name: %s. primary_key: %s, attribute_columns: %s.' % (succeed.table_name, succeed.row.primary_key,
succeed.row.attribute_columns))
else:
print('table_name: %s. この行は存在しません。' % succeed.table_name)
if not response.is_all_succeed():
print('* 失敗した行: ')
for failed in response.get_failed_rows():
print('table_name: %s. エラーコード: %s, エラーメッセージ: %s.' % (failed.table_name, failed.error_code,
failed.error_message))
except Exception as e:
print("バッチ取得操作が失敗しました。エラー: %s" % e)
以下に、バッチ取得操作のその他のパラメーター構成例を示します。
-
複数のテーブルからデータを読み取る。バッチ取得操作は、複数のテーブルからの読み取りをサポートしています。各テーブルに対して
TableInBatchGetRowItemを指定します。# 2 つ目のテーブルのクエリ条件を構築します。 primary_keys1 = [[('order_id', '90fb478c-1360-11f0-a34d-00163e30a2a9')]] batchGetRowItem1 = TableInBatchGetRowItem('orders_small', primary_keys=primary_keys1, max_version=1) request.add(batchGetRowItem1) -
バージョン範囲を設定して、その範囲内に収まるデータバージョンのみを読み取る。
# 現在時刻から過去 24 時間の範囲をバージョン範囲として設定します。 time_range = (int(time.time() * 1000 - 86400 * 1000), int(time.time() * 1000)) batchGetRowItem = TableInBatchGetRowItem('test_table', primary_keys=primary_keys, time_range=time_range) -
読み取る属性列を指定する。
columns_to_get = ['col1'] batchGetRowItem = TableInBatchGetRowItem('test_table', primary_keys=primary_keys, columns_to_get=columns_to_get, max_version=1)