全部產品
Search
文件中心

Tablestore:批量讀取資料

更新時間:Mar 31, 2026

本文介紹如何通過 Python SDK 批量讀取Table Store中的資料,支援查詢多個表的資料。

注意事項

單次批量讀取操作最多支援讀取 100 行資料。

前提條件

初始化Tablestore Client

方法說明

def batch_get_row(self, request)

request參數說明

  • items(必選)List[TableInBatchGetRowItem]:批量讀取資料資訊,包含以下參數。

    名稱

    類型

    說明

    table_name(必選)

    str

    資料表名稱。

    primary_keys(必選)

    List[Tuple]

    主鍵資訊,包括主鍵列名稱和主索引值。

    • 主鍵列資料類型包括 STRING、INTEGER 和 BINARY。

    • 主鍵個數和類型必須與資料表的主鍵保持一致。

    max_version(可選)

    int

    最大版本數。

    • 必須設定最大版本數和版本範圍的其中一個。

    • 如果符合查詢條件的資料版本數量超過設定的最大版本數,按從新到舊的順序返回指定版本數量的資料。

    time_range(可選)

    Tuple

    資料版本範圍。

    • 必須設定最大版本數和版本範圍的其中一個。

    • Table Store資料表的每個屬性列可以有不同的資料版本,設定版本範圍後,僅返回版本範圍內的資料。

    columns_to_get(可選)

    List[str]

    指定讀取的資料列,可以是主鍵列或屬性列。

    • 不設定columns_to_get時,返回整行資料。

    • 設定columns_to_get時,如果讀取的行資料不包含任何指定的資料列,將返回 null。

    column_filter(可選)

    ColumnCondition

    過濾條件,詳情請參見過濾器

    • 如果同時設定columns_to_get和column_filter,先按columns_to_get篩選合格資料行,再按column_filter條件過濾資料。

範例程式碼

以下範例程式碼用於讀取 test_table 表中主索引值為 row1 和 row2 的兩行資料。

try:
    primary_keys = []
    # 添加第 1 行主鍵資訊
    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('* Is all succeeded: %s' % response.is_all_succeed())
    print('* Succeeded Rows: ')
    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. This row is not exist.' % succeed.table_name)
    if not response.is_all_succeed():
        print('* Failed Rows: ')
        for failed in response.get_failed_rows():
            print('table_name: %s. error code: %s, error message: %s.' % (failed.table_name, failed.error_code,
                                                                          failed.error_message))
except Exception as e:
    print("Batch get row failed with error: %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)
  • 設定讀取的資料版本範圍,結果只返回版本範圍內的資料。

    # 設定查詢的資料版本範圍為目前時間往前一天
    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)

相關文檔

範圍讀取資料