全部产品
Search
文档中心

Tablestore:Python SDK

更新时间:Mar 25, 2026

Tablestore SDK untuk Python mendukung operasi pada model tabel lebar dan model deret waktu.

Mulai

Integrasikan Tablestore SDK untuk Python dengan menyiapkan lingkungan, menginstal SDK, dan melakukan inisialisasi klien.

image

Prasyarat

Unduh dan instal Python. Jalankan perintah python3 --version untuk memeriksa versi Python Anda.

Mulai dari versi 6.0.0, Python SDK hanya mendukung Python 3 dan tidak lagi mendukung Python 2. Untuk menggunakan Python 2, gunakan versi 5.4.4 atau sebelumnya.

Instal SDK

Pilih metode instalasi berdasarkan lingkungan pengembangan Anda. Gunakan versi terbaru SDK agar contoh kode berjalan dengan benar.

Instal menggunakan pip (disarankan)

Jalankan perintah berikut untuk menginstal Tablestore SDK untuk Python.

pip3 install tablestore

Instal dari GitHub

Unduh Tablestore SDK dari GitHub menggunakan perintah git, lalu instal.

  1. Jalankan perintah berikut untuk mengunduh SDK.

    git clone https://github.com/aliyun/aliyun-tablestore-python-sdk.git
  2. Jalankan perintah berikut untuk masuk ke folder paket instalasi SDK.

    cd aliyun-tablestore-python-sdk
  3. Jalankan perintah berikut untuk menginstal SDK.

    python3 setup.py install

Instal dari kode sumber

Unduh dan instal kode sumber SDK.

  1. Unduh dan ekstrak Python SDK.

  2. Masuk ke folder tempat Anda mengekstrak paket SDK.

  3. Jalankan perintah berikut untuk menginstal SDK.

    python3 setup.py install

Konfigurasikan kredensial akses

Buat AccessKey untuk Akun Alibaba Cloud atau pengguna RAM Anda. Lalu, konfigurasikan AccessKey dalam variabel lingkungan seperti yang ditunjukkan di bawah ini. Mengonfigurasi AccessKey dalam variabel lingkungan meningkatkan keamanan karena mencegah penyematan informasi sensitif secara langsung di dalam kode.

Setelah konfigurasi selesai, restart atau refresh lingkungan pengembangan Anda, termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan latar belakang, agar variabel lingkungan sistem terbaru dimuat. Untuk informasi lebih lanjut tentang jenis kredensial akses lainnya, lihat Konfigurasikan kredensial akses.

Linux

  1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.bashrc.

    echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
    echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
  2. Jalankan perintah berikut untuk menerapkan perubahan.

    source ~/.bashrc
  3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.

    echo $TABLESTORE_ACCESS_KEY_ID
    echo $TABLESTORE_ACCESS_KEY_SECRET

macOS

  1. Jalankan perintah berikut di terminal untuk melihat jenis shell default Anda.

    echo $SHELL
  2. Lakukan langkah-langkah berikut berdasarkan jenis shell default Anda.

    Zsh
    1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.zshrc.

      echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
      echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
    2. Jalankan perintah berikut untuk menerapkan perubahan.

      source ~/.zshrc
    3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET
    Bash
    1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.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. Jalankan perintah berikut untuk menerapkan perubahan.

      source ~/.bash_profile
    3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET

Windows

CMD
  1. Jalankan perintah berikut di Command Prompt (CMD) untuk mengatur variabel lingkungan.

    setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  2. Restart CMD dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.

    echo %TABLESTORE_ACCESS_KEY_ID%
    echo %TABLESTORE_ACCESS_KEY_SECRET%
PowerShell
  1. Jalankan perintah berikut di 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. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.

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

Inisialisasi client

Kode berikut menginisialisasi klien Tablestore dan mencantumkan semua tabel data serta tabel deret waktu dalam instans tertentu untuk memverifikasi koneksi.

Penting

Akses jaringan publik dinonaktifkan secara default untuk instans baru. Untuk mengakses sumber daya pada instans melalui jaringan publik, aktifkan akses jaringan publik di pengaturan Network Management untuk instans tersebut.

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

import os
import sys
from tablestore import OTSClient

def main():
    try:
        # Dapatkan kredensial akses dari variabel lingkungan. Pastikan TABLESTORE_ACCESS_KEY_ID dan TABLESTORE_ACCESS_KEY_SECRET telah disetel.
        access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
        access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")

        # TODO: Ganti nilai berikut dengan detail instans Anda.
        instance_name = "n01k********"  # Nama instans
        endpoint = "https://n01k********.cn-hangzhou.ots.aliyuncs.com"  # Titik akhir instans
        
        # Buat instans client.
        client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name)

        # Cantumkan tabel data.
        resp = client.list_table()

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

        # Cantumkan tabel deret waktu.
        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()

Kompatibilitas versi

Versi saat ini adalah 6.x.x. Daftar berikut menjelaskan kompatibilitasnya dengan versi-versi sebelumnya:

  • Kompatibel dengan seri SDK 5.x.x.

    Versi 5.4.x, 5.3.x, dan 5.2.x kompatibel. Versi 5.2.1 dan 5.1.0 tidak kompatibel dalam kasus-kasus berikut:

    • Tipe nilai kembali untuk metode Search.

      Pada versi 5.1.0 dan sebelumnya, metode ini secara default mengembalikan objek Tuple. Mulai dari versi 5.2.0, metode ini secara default mengembalikan objek SearchResponse. Objek SearchResponse mengimplementasikan metode __iter__ dan mendukung traversal. Untuk mengembalikan objek Tuple, gunakan metode SearchResponse.v1_response().

    • Metode ParallelScan yang baru.

      Secara default, metode ini mengembalikan objek ParallelScanResponse. Untuk mengembalikan objek Tuple, gunakan metode ParallelScanResponse.v1_response().

  • Kompatibel dengan seri SDK 4.x.x.

  • Tidak kompatibel dengan seri SDK 2.x.x. Versi dalam seri 2.x.x mendukung primary key yang tidak berurutan, sedangkan versi 4.0.0 dan seterusnya tidak. Ketidakkompatibelan tersebut mencakup hal-hal berikut:

    • Nama paket berubah dari ots2 menjadi tablestore.

    • Parameter TableOptions ditambahkan ke metode Client.create_table.

    • Untuk metode seperti put_row, get_row, dan update_row, tipe parameter primary_key berubah dari dict menjadi list untuk memastikan urutan primary key.

    • Untuk metode seperti put_row dan update_row, tipe parameter attribute_columns berubah dari dict menjadi list.

    • Parameter timestamp ditambahkan ke parameter attribute_columns untuk metode seperti put_row dan update_row.

    • Metode seperti get_row dan get_range kini mencakup parameter max_version and time_range. Anda harus menentukan minimal salah satu dari dua parameter tersebut.

    • Operasi seperti put_row, update_row, dan delete_row kini mendukung parameter return_type. Satu-satunya nilai yang didukung untuk parameter ini adalah RT_PK, yang menentukan bahwa nilai kembali mencakup primary key (PK) dari baris tersebut.

    • Operasi seperti put_row, update_row, dan delete_row kini mencakup field return_row dalam nilai kembalinya. Jika Anda menyetel parameter return_type ke RT_PK dalam permintaan, field return_row akan berisi nilai PK dari baris tersebut.

FAQ

Apa yang harus saya lakukan jika terjadi error "Signature mismatch"?

Penyimpangan berikut terjadi:

Error Code: OTSAuthFailed, Message: Signature mismatch., RequestId: 0005f55a-xxxx-xxxx-xxxx-xxxxxxxxxxxx, TraceId: 10b0f0e0-xxxx-xxxx-xxxx-xxxxxxxxxxxx, HttpStatus: 403
  • Penyebab: ID AccessKey atau rahasia AccessKey yang ditentukan selama inisialisasi klien salah.

  • Solusi: Berikan AccessKey yang benar, yang mencakup ID AccessKey dan rahasia AccessKey.

Apa yang harus saya lakukan jika terjadi error "Request denied by instance ACL policies"?

Eksepsi Request denied by instance ACL policies terjadi saat Anda menggunakan SDK untuk mengakses sumber daya di instans Tablestore. Contoh kesalahan tersebut ditampilkan di bawah ini:

[ErrorCode]:OTSAuthFailed, [Message]:Request denied by instance ACL policies., [RequestId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [TraceId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [HttpStatus:]403
  • Penyebab: Jenis jaringan yang digunakan oleh klien tidak memenuhi persyaratan akses jaringan instans. Misalnya, klien menggunakan Internet, tetapi instans tidak dikonfigurasi untuk mengizinkan akses melalui Internet.

  • Solusi: Secara default, akses jaringan publik dinonaktifkan untuk instans baru. Untuk mengakses sumber daya dalam instans melalui Internet, aktifkan akses jaringan publik sebagai berikut:

    1. Buka Konsol Tablestore dan klik alias instans.

    2. Klik Network Management. Untuk Allowed Network Type, pilih Internet, lalu klik Settings.

Apa yang harus saya lakukan jika terjadi error "Request denied because this instance can only be accessed from the binded VPC"?

Pengecualian Request denied because this instance can only be accessed from the bound VPC terjadi saat Anda menggunakan SDK untuk mengakses sumber daya di instans Tablestore. Contoh kesalahan tersebut ditampilkan di bawah ini:

[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
  • Penyebab: Jika tipe akses instans Tablestore diatur ke Bound VPCs Only atau Tablestore Console or Bound VPCs, Anda harus menyambungkan VPC ke instans tersebut. Anda juga harus memastikan bahwa klien berada dalam VPC yang sama dengan instans dan mengakses Tablestore menggunakan titik akhir VPC.

  • Solusi: Ubah tipe akses instans agar mengizinkan akses Internet, atau sambungkan VPC ke instans Tablestore dan pastikan klien berada dalam jaringan VPC tersebut. Untuk menyambungkan VPC:

    1. Buka Konsol Tablestore dan klik alias instans.

    2. Klik Network Management > Bind VPC. Pilih VPC ID dan VSwitch, masukkan VPC Name, lalu klik OK.

Bagaimana cara mengakses sumber daya Tablestore melalui HTTPS?

Gunakan versi terbaru Python SDK. Pastikan versi OpenSSL Anda adalah 0.9.8j atau lebih baru. OpenSSL 1.0.2d direkomendasikan.

Apa yang harus saya lakukan jika versi protobuf tidak kompatibel?

Beberapa versi protobuf tidak kompatibel dengan file *pb2.py dalam paket instalasi saat ini. Untuk mengatasi masalah ini, buat ulang file *pb2.py secara manual:

  1. Gunakan versi protoc Anda saat ini untuk menghasilkan kode untuk file proto yang sesuai secara berurutan.

    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. Ubah nama ketiga file yang dihasilkan dengan ekstensi pb2.py. Lalu, salin file-file tersebut ke folder tablestore/protobuf/ dalam direktori instalasi untuk menggantikan file *pb2.py asli.

Gunakan tool Credentials untuk membaca kredensial akses

  1. Jalankan perintah berikut untuk menginstal paket alibabacloud_credentials.

    pip3 install alibabacloud_credentials
  2. Konfigurasikan variabel lingkungan.

    Setel variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET ke ID AccessKey dan rahasia AccessKey Akun Alibaba Cloud Anda.

  3. Baca kredensial akses.

    Kode berikut menggunakan tool Credentials untuk membaca kredensial akses dari variabel lingkungan.

    # -*- coding: utf-8 -*-
    from alibabacloud_credentials.client import Client as CredClient
    
    # Gunakan CredClient untuk mendapatkan ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
    cred = CredClient()
    access_key_id = cred.get_credential().access_key_id
    access_key_secret = cred.get_credential().access_key_secret

Referensi