全部产品
Search
文档中心

表格存储:批量读取数据

更新时间:Mar 30, 2026

本文介绍如何通过 Python SDK 批量读取表格存储中的数据,支持查询多个表的数据。

注意事项

单次批量读取操作最多支持读取 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

    数据版本范围。

    • 必须设置最大版本数和版本范围的其中一个。

    • 表格存储数据表的每个属性列可以有不同的数据版本,设置版本范围后,仅返回版本范围内的数据。

    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)

相关文档

范围读取数据