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

Tablestore:データのバッチ取得

最終更新日:Mar 31, 2026

Python SDK を使用して、1 つまたは複数の Tablestore テーブルからデータをバッチで読み取ります。

注意事項

各バッチ取得操作では、最大 100 行のデータを取得できます。

前提条件

Tablestore クライアントの初期化

メソッド

def batch_get_row(self, request)

リクエストパラメーター

  • items(必須)List[TableInBatchGetRowItem]:バッチ取得操作で取得する項目のリスト。各項目には以下のパラメーターが含まれます。

    パラメーター

    説明

    table_name(必須)

    str

    テーブル名です。

    primary_keys(必須)

    List[Tuple]

    各プライマリキー列の名前と値です。

    • プライマリキー列のデータの型は、STRING、INTEGER、BINARY のいずれかです。

    • プライマリキー列の数および型は、テーブルのスキーマと一致している必要があります。

    max_version(任意)

    int

    返されるバージョンの最大数です。

    • max_version または time_range のいずれかを指定する必要があります。

    • 該当するバージョン数がこの上限を超える場合、Tablestore は時系列の逆順(最新のものから)で、この上限に達するまで最も新しいバージョンを返します。

    time_range(任意)

    Tuple

    読み取るデータのバージョン範囲です。

    • max_version または time_range のいずれかを指定する必要があります。

    • Tablestore テーブル内の各属性列には、複数のデータバージョンが格納される場合があります。バージョン範囲を設定すると、その範囲内に収まるバージョンのみが返されます。

    columns_to_get(任意)

    List[str]

    読み取る列です。プライマリキー列および属性列のいずれかを指定できます。

    • このパラメーターを指定しない場合、行全体が返されます。

    • 対象の行に指定された列が存在しない場合、応答には null が返されます。

    column_filter(任意)

    ColumnCondition

    フィルター条件です。詳細については、「フィルター」をご参照ください。

    • columns_to_getcolumn_filter の両方が指定されている場合、Tablestore はまず columns_to_get で指定された列を取得し、その後 column_filter を適用して結果をフィルターします。

サンプルコード

以下のコードは、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)

関連ドキュメント

範囲指定でのデータ読み取り