Todos os produtos
Search
Central de documentação

Tablestore:Read data in a range

Última atualização: Jun 30, 2026

Use o SDK do Python para ler dados dentro de um intervalo de chave primária especificado em uma tabela de dados do Tablestore.

Pré-requisitos

Inicializar um cliente do Tablestore

Método

def get_range(self, table_name, direction,
              inclusive_start_primary_key,
              exclusive_end_primary_key,
              columns_to_get=None,
              limit=None,
              column_filter=None,
              max_version=1,
              time_range=None,
              start_column=None,
              end_column=None,
              token=None,
              transaction_id=None):

Parameters

Parameter

Type

Description

table_name (Required)

str

Nome da tabela de dados.

inclusive_start_primary_key (Required)

List[Tuple]

Chave primária inicial. Inclui nomes e valores das colunas de chave primária.

  • O resultado inclui esta linha.

  • A quantidade de colunas e os tipos de dados devem corresponder ao esquema da tabela.

  • Em leituras progressivas, deve ser menor que a chave primária final.

  • Em leituras regressivas, deve ser maior que a chave primária final.

  • INF_MIN representa infinito negativo e INF_MAX representa infinito positivo.

exclusive_end_primary_key (Required)

List[Tuple]

Chave primária final. Inclui nomes e valores das colunas de chave primária.

  • O resultado exclui esta linha.

  • A quantidade de colunas e os tipos de dados devem corresponder ao esquema da tabela.

  • INF_MIN representa infinito negativo e INF_MAX representa infinito positivo.

direction (Required)

Direction

Direção da leitura.

  • FORWARD: Padrão. Lê os dados em ordem crescente de chave primária.

  • BACKWARD: Lê os dados em ordem decrescente de chave primária.

max_version (Optional)

int

Número máximo de versões a retornar por coluna. Padrão: 1.

  • Especifique max_version ou time_range.

  • Se as versões correspondentes excederem esse valor, apenas as mais recentes serão retornadas.

time_range (Optional)

Tuple

Intervalo de versões a serem lidas.

  • Especifique max_version ou time_range.

  • Colunas de atributo podem ter múltiplas versões. Apenas as versões dentro do intervalo especificado são retornadas.

limit (Optional)

int

Quantidade máxima de linhas por solicitação. Deve ser maior que 0. Se houver mais linhas correspondentes, a resposta retorna até essa quantidade de linhas e uma chave primária inicial para recuperar o próximo lote.

columns_to_get (Optional)

List[str]

Colunas a serem retornadas. Aceita nomes de colunas de chave primária ou de atributo.

  • Se omitido, todas as colunas são retornadas.

  • Caso uma linha não possua as colunas especificadas, ela será retornada com uma lista vazia de colunas de atributo.

column_filter (Optional)

ColumnCondition

Condição de filtro. Filtro.

  • Quando columns_to_get e column_filter são definidos simultaneamente, o Tablestore recupera primeiro as colunas especificadas e depois aplica o filtro.

transaction_id (Optional)

str

ID da transação local. Identifica exclusivamente uma transação local. Transações locais.

Exemplos

Este exemplo lê todas as linhas da tabela test_table cujos valores de chave primária sejam maiores que row1.

try:
    # Set the start primary key for the query.
    inclusive_start_primary_key = [('id', 'row1')]
    # Set the end primary key for the query. The end primary key is exclusive.
    exclusive_end_primary_key = [('id', INF_MAX)]

    # Call the get_range method to query data.
    consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
                                                                              inclusive_start_primary_key, exclusive_end_primary_key)

    # Process the results.
    print('* Read CU Cost: %s' % consumed.read)
    print('* Write CU Cost: %s' % consumed.write)
    print('* Rows Data:')
    for row in row_list:
        print(row.primary_key, row.attribute_columns)
except Exception as e:
    print("Range get failed with error: %s" % e)

Uma única chamada retorna no máximo 5.000 linhas ou 4 MB. Quando os resultados ultrapassarem esse limite, use o valor next_start_primary_key retornado para paginar.

while True:
    # Call the get_range method to query data.
    consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
                                                                              inclusive_start_primary_key,
                                                                              exclusive_end_primary_key)

    # Process the results.
    print('* Read CU Cost: %s' % consumed.read)
    print('* Write CU Cost: %s' % consumed.write)
    print('* Rows Count: %s' % len(row_list))
    print('* Rows Data:')
    for row in row_list:
        print(row.primary_key, row.attribute_columns)

    # Set the start primary key for the next read.
    if next_start_primary_key:
        inclusive_start_primary_key = next_start_primary_key
    else:
        break

Opções adicionais de consulta:

  • Filtrar por intervalo de versão.

    # Set the version range for the query to the last 24 hours.
    time_range = (int(time.time() * 1000 - 86400 * 1000), int(time.time() * 1000))
    
    consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
                                                                              inclusive_start_primary_key, exclusive_end_primary_key,
                                                                              time_range= time_range)
  • Ler colunas específicas.

    columns_to_get = ['col1']
    
    # Call the get_range method to query data.
    consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
                                                                              inclusive_start_primary_key, exclusive_end_primary_key,
                                                                              columns_to_get)
  • Limitar a quantidade de linhas por solicitação.

    limit = 10
    
    # Call the get_range method to query data.
    consumed, next_start_primary_key, row_list, next_token = client.get_range('test_table', Direction.FORWARD,
                                                                              inclusive_start_primary_key, exclusive_end_primary_key,
                                                                              limit=limit)

Referências

Leitura de dados em lote