Todos los productos
Search
Centro de documentos

Tablestore:Python SDK

Última actualización: Sep 22, 2026

El SDK de Tablestore para Python admite operaciones con los modelos de tabla ancha y de series de tiempo.

Primeros pasos

Para comenzar, prepare su entorno, instale el SDK e inicialice un cliente.

image

Requisitos previos

Descargue e instale el entorno de ejecución de Python. Ejecute el comando python3 --version para comprobar su versión de Python.

A partir de la versión 6.0.0, el SDK de Python solo es compatible con Python 3 y ya no admite Python 2. Si necesita usar Python 2, debe utilizar la versión 5.4.4 o una anterior.

Instalar el SDK

Seleccione un método de instalación. Utilice la versión más reciente del SDK para asegurar que los ejemplos de código se ejecuten correctamente.

Instalar mediante pip (recomendado)

Ejecute a continuación el comando para instalar el SDK.

pip3 install tablestore

Instalar desde GitHub

Clone el SDK desde GitHub con git e instálelo.

  1. Clone el repositorio.

    git clone https://github.com/aliyun/aliyun-tablestore-python-sdk.git
  2. Vaya al directorio del SDK.

    cd aliyun-tablestore-python-sdk
  3. Instale el SDK.

    python3 setup.py install

Instalar desde el código fuente

Descargue e instale el SDK a partir del código fuente.

  1. Descargue y descomprima Python SDK.

  2. Vaya al directorio del SDK descomprimido.

  3. Instale el SDK.

    python3 setup.py install

Configurar las credenciales de acceso

Obtenga Create an AccessKey para su cuenta de Alibaba Cloud o usuario de RAM. Después, configúrelas como variable de entorno para evitar codificarlas directamente en el código.

Reinicie su IDE, terminal, otras aplicaciones de escritorio y servicios en segundo plano después de configurar las variables. Así se cargarán las variables de entorno actualizadas. Para obtener más información sobre otros tipos de credenciales de acceso, consulte Configure access credentials .

Linux

  1. Agregue las variables de entorno al final de ~/.bashrc:

    echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
    echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
  2. Aplique los cambios:

    source ~/.bashrc
  3. Compruebe las variables de entorno:

    echo $TABLESTORE_ACCESS_KEY_ID
    echo $TABLESTORE_ACCESS_KEY_SECRET

macOS

  1. Compruebe cuál es su shell predeterminado:

    echo $SHELL
  2. Configure las variables según el tipo de shell:

    Zsh

    1. Agregue las variables de entorno al final de ~/.zshrc:

      echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
      echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
    2. Aplique los cambios:

      source ~/.zshrc
    3. Compruebe las variables de entorno:

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET

    Bash

    1. Agregue las variables de entorno al final de ~/.bash_profile:

      echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
      echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
    2. Aplique los cambios:

      source ~/.bash_profile
    3. Compruebe las variables de entorno:

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET

Windows

CMD

  1. Establezca las variables de entorno en CMD:

    setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  2. Reinicie CMD y compruebe los valores:

    echo %TABLESTORE_ACCESS_KEY_ID%
    echo %TABLESTORE_ACCESS_KEY_SECRET%

PowerShell

  1. Ejecute lo siguiente en PowerShell:

    [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
    [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  2. Compruebe las variables de entorno:

    [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
    [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

Inicializar el cliente

El código a continuación inicializa un cliente. También enumera todas las tablas de datos y de series de tiempo de una instancia para comprobar la conectividad.

Importante

El acceso por red pública está deshabilitado de forma predeterminada en las instancias nuevas. Para habilitarlo, vaya a Network Management de la instancia.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import sys
from tablestore import OTSClient

def main():
    try:
        # Get access credentials from environment variables. Ensure TABLESTORE_ACCESS_KEY_ID and TABLESTORE_ACCESS_KEY_SECRET are set.
        access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
        access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")

        # TODO: Replace the following values with your instance details.
        instance_name = "n01k********"  # Instance name
        endpoint = "https://n01k********.cn-hangzhou.ots.aliyuncs.com"  # Instance endpoint
        
        # Create a client instance.
        client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name)

        # List the data tables.
        resp = client.list_table()

        print(f"Found {len(resp)} data tables in instance '{instance_name}':")
        for table_name in resp:
            print(f"{table_name}")

        # List the time series tables.
        resp = client.list_timeseries_table()

        print(f"\nFound {len(resp)} time series tables in instance '{instance_name}':")
        for tableMeta in resp:
            print(f"{tableMeta.timeseries_table_name}")
            
    except Exception as e:
        print(f"Operation failed: {str(e)}")
        sys.exit(1)

if __name__ == "__main__":
    main()

Compatibilidad de versiones

La versión actual es 6.x.x. Su compatibilidad con versiones anteriores es la siguiente:

  • Compatible con 5.x.x.

    Las versiones 5.4.x, 5.3.x y 5.2.x son compatibles. Sin embargo, 5.2.1 y 5.1.0 presentan incompatibilidades en estos casos:

    • El tipo de valor devuelto por el método Search.

      En la versión 5.1.0 y anteriores, este método devuelve un objeto Tuple de forma predeterminada. A partir de la 5.2.0, devuelve un objeto SearchResponse. La clase SearchResponse implementa __iter__ y permite recorrer sus elementos. Para obtener un objeto Tuple, utilice SearchResponse.v1_response().

    • El nuevo método ParallelScan.

      De forma predeterminada, este método devuelve un objeto ParallelScanResponse. Si necesita obtener un objeto Tuple, utilice ParallelScanResponse.v1_response().

  • Compatible con 4.x.x.

  • Incompatible con 2.x.x. La serie 2.x.x admite claves primarias desordenadas, mientras que la 4.0.0 y posteriores no. Cambios disruptivos:

    • El nombre del paquete cambió de ots2 a tablestore.

    • Se agregó el parámetro TableOptions a Client.create_table.

    • En los métodos put_row, get_row y update_row, el tipo de primary_key cambió de dict a list para conservar el orden de la clave primaria.

    • En put_row y update_row, el tipo de attribute_columns cambió de dict a list.

    • Se añadió timestamp a attribute_columns en put_row y update_row.

    • Los métodos get_row y get_range ahora requieren como mínimo uno de estos parámetros: max_version and time_range.

    • Los métodos put_row, update_row y delete_row ahora admiten return_type. El único valor compatible es RT_PK, que devuelve la clave primaria (PK) de la fila.

    • Las respuestas de put_row, update_row y delete_row ahora incluyen return_row. Cuando return_type se establece en RT_PK, return_row contiene el valor de PK.

Preguntas frecuentes

¿Qué hago si ocurre el error "Signature mismatch"?

Se presenta la siguiente excepción:

Error Code: OTSAuthFailed, Message: Signature mismatch., RequestId: 0005f55a-xxxx-xxxx-xxxx-xxxxxxxxxxxx, TraceId: 10b0f0e0-xxxx-xxxx-xxxx-xxxxxxxxxxxx, HttpStatus: 403
  • Causa: el AccessKey ID o el AccessKey secret es incorrecto.

  • Solución: proporcione el AccessKey ID y el AccessKey secret correctos.

¿Qué hago si ocurre el error "Request denied by instance ACL policies"?

El SDK puede devolver el error Request denied by instance ACL policies:

[ErrorCode]:OTSAuthFailed, [Message]:Request denied by instance ACL policies., [RequestId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [TraceId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [HttpStatus:]403
  • Causa: el tipo de red del cliente no coincide con la política de acceso de la instancia. Por ejemplo, la instancia no permite el acceso por Internet.

  • Solución: el acceso por red pública está deshabilitado de forma predeterminada. Para habilitarlo, siga estos pasos:

    1. En la consola de Tablestore, haga clic en la instancia de destino.

    2. Haga clic en Network Management. En Allowed Network Type, seleccione Internet y luego haga clic en Settings.

¿Qué hago si ocurre el error "Request denied because this instance can only be accessed from the binded VPC"?

El SDK puede devolver el error Request denied because this instance can only be accessed from the bound VPC:

[ErrorCode]:OTSAuthFailed, [Message]:Request denied because this instance can only be accessed from the binded VPC., [RequestId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [TraceId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [HttpStatus:]403
  • Causa: el tipo de acceso de la instancia está configurado como Bound VPCs Only o Tablestore Console or Bound VPCs. Sin embargo, el cliente no se encuentra en una VPC asociada ni accede a Tablestore mediante un endpoint de VPC.

  • Solución: permita el acceso por Internet, o bien asocie una VPC y conecte el cliente desde ella:

    1. En la consola de Tablestore, haga clic en la instancia de destino.

    2. Vaya a Network Management > Bind VPC. Seleccione un VPC ID y un VSwitch, introduzca un VPC Name y haga clic en OK.

¿Cómo accedo a los recursos de Tablestore mediante HTTPS?**

Utilice la versión más reciente del SDK de Python. Asegúrese de que su versión de OpenSSL sea 0.9.8j o posterior; se recomienda OpenSSL 1.0.2d.

¿Qué hago si las versiones de protobuf son incompatibles?

Algunas versiones de protobuf son incompatibles con los archivos *pb2.py del paquete de instalación. Para resolverlo, regenere los archivos *pb2.py:

  1. Use su versión actual de protoc para generar el código de los archivos proto.

    protoc --python_out=. tablestore/protobuf/search.proto
    protoc --python_out=. tablestore/protobuf/table_store.proto
    protoc --python_out=. tablestore/protobuf/table_store_filter.proto
  2. Cambie el nombre de los archivos generados para que tengan la extensión pb2.py. Luego cópielos a tablestore/protobuf/ dentro del directorio de instalación y reemplace los archivos *pb2.py originales.

Usar la herramienta Credentials para leer las credenciales de acceso

  1. Ejecute el siguiente comando para instalar el paquete alibabacloud_credentials.

    pip3 install alibabacloud_credentials
  2. Configure las variables de entorno.

    Establezca ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET con el AccessKey ID y el AccessKey secret de su cuenta de Alibaba Cloud.

  3. Lea las credenciales de acceso.

    El código a continuación lee las credenciales de acceso desde las variables de entorno mediante la herramienta Credentials.

    # -*- coding: utf-8 -*-
    from alibabacloud_credentials.client import Client as CredClient
    
    # Use CredClient to get the AccessKey ID and AccessKey secret from the environment variables.
    cred = CredClient()
    access_key_id = cred.get_credential().access_key_id
    access_key_secret = cred.get_credential().access_key_secret

Referencias