Kit Pengembangan Perangkat Lunak (SDK) Tablestore Python mendukung operasi pada model tabel lebar dan model timeseries.
Integrasi cepat
Bagian ini menjelaskan cara mengintegrasikan SDK Tablestore Python dengan cepat, mulai dari menyiapkan lingkungan hingga mengautentikasi klien.
Persiapkan lingkungan
Unduh dan instal lingkungan runtime Python. Jalankan perintah python --version untuk memeriksa versi Python Anda.
Mulai versi 6.0.0, SDK Python 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 dapat dijalankan dengan benar.
Instal menggunakan pip (disarankan)
Jalankan perintah berikut untuk menginstal SDK Tablestore Python.
pip install tablestoreInstal dari GitHub
Unduh SDK Tablestore dari GitHub menggunakan perintah git dan instal.
Jalankan perintah berikut untuk mengunduh SDK.
git clone https://github.com/aliyun/aliyun-tablestore-python-sdk.gitJalankan perintah berikut untuk masuk ke folder paket instalasi SDK.
cd aliyun-tablestore-python-sdkJalankan perintah berikut untuk menginstal SDK.
python setup.py install
Instal dari kode sumber
Unduh dan instal kode sumber SDK.
Unduh dan ekstrak Python SDK.
Masuk ke folder tempat Anda mengekstrak paket SDK.
Jalankan perintah berikut untuk menginstal SDK.
python setup.py install
Konfigurasikan kredensial akses
Buat AccessKey untuk Akun Alibaba Cloud atau Pengguna RAM Anda. Kemudian, konfigurasikan AccessKey tersebut dalam variabel lingkungan seperti yang ditunjukkan di bawah ini. Mengonfigurasi AccessKey dalam variabel lingkungan meningkatkan keamanan karena mencegah penyematan informasi sensitif secara langsung dalam kode.
Setelah konfigurasi selesai, restart atau refresh lingkungan pengembangan Anda—termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, serta layanan latar belakang—untuk memastikan variabel lingkungan sistem terbaru dimuat. Untuk informasi lebih lanjut tentang jenis kredensial akses lainnya, lihat Konfigurasikan kredensial akses.
Linux
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'" >> ~/.bashrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrcJalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
macOS
Jalankan perintah berikut di terminal untuk melihat jenis shell default Anda.
echo $SHELLLakukan langkah-langkah berikut berdasarkan jenis shell default Anda.
Zsh
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'" >> ~/.zshrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrcJalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
Bash
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_profileJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profileJalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
Windows
CMD
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"Restart CMD dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah aktif.
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET%
PowerShell
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)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 klien
Kode contoh berikut menginisialisasi klien, lalu mencantumkan tabel data dan tabel timeseries dalam instans Tablestore untuk mengautentikasi koneksi.
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 instans tersebut.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
from tablestore import OTSClient
def main():
try:
# Ambil kredensial akses dari variabel lingkungan. Konfigurasikan TABLESTORE_ACCESS_KEY_ID dan TABLESTORE_ACCESS_KEY_SECRET.
access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")
# TODO: Ubah konfigurasi berikut sesuai detail instans Anda.
instance_name = "n01k********" # Masukkan nama instans.
endpoint = "https://n01k********.cn-hangzhou.ots.aliyuncs.com" # Masukkan titik akhir instans.
# Buat instans klien.
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 timeseries.
resp = client.list_timeseries_table()
print(f"\nFound {len(resp)} timeseries 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 sebelumnya:
Kompatibel dengan seri SDK 5.x.x.
Versi 5.4.x, 5.3.x, dan 5.2.x kompatibel. Namun, versi 5.2.1 dan 5.1.0 memiliki ketidakkompatibilitas berikut:
Tipe nilai kembali untuk metode
Search.Pada versi 5.1.0 dan sebelumnya, metode ini secara default mengembalikan objek
Tuple. Mulai versi 5.2.0, metode ini secara default mengembalikan objekSearchResponse. ObjekSearchResponsemengimplementasikan metode__iter__dan mendukung traversal. Untuk mengembalikan objekTuple, gunakan metodeSearchResponse.v1_response().Metode
ParallelScanyang baru.Secara default, metode ini mengembalikan objek
ParallelScanResponse. Untuk mengembalikan objekTuple, gunakan metodeParallelScanResponse.v1_response().
Kompatibel dengan seri SDK 4.x.x.
Tidak kompatibel dengan seri SDK 2.x.x. Hal ini karena versi seri 2.0 mendukung primary key yang tidak berurutan, sedangkan versi 4.0.0 dan seterusnya tidak. Ketidakkompatibilitas tersebut meliputi hal-hal berikut:
Nama paket berubah dari
ots2menjaditablestore.Parameter
TableOptionsditambahkan ke metodeClient.create_table.Untuk metode seperti
put_row,get_row, danupdate_row, tipe parameterprimary_keyberubah daridictmenjadilistuntuk memastikan urutan primary key.Untuk metode seperti
put_rowdanupdate_row, tipe parameterattribute_columnsberubah daridictmenjadilist.Parameter
timestampditambahkan ke parameterattribute_columnsuntuk metode sepertiput_rowdanupdate_row.Metode seperti
get_rowdanget_rangesekarang mencakup parametermax_version, time_range. Anda harus menentukan setidaknya salah satu dari dua parameter tersebut.Operasi seperti
put_row,update_row, dandelete_rowsekarang mendukung parameterreturn_type. Satu-satunya nilai yang didukung untuk parameter ini adalahRT_PK, yang menentukan bahwa nilai kembali mencakup primary key (PK) baris tersebut.Operasi seperti
put_row,update_row, dandelete_rowsekarang mencakup bidangreturn_rowdalam nilai kembalinya. Jika Anda mengatur parameterreturn_typekeRT_PKdalam permintaan, bidangreturn_rowakan berisi nilaiPKbaris tersebut.
FAQ
Apa yang harus saya lakukan jika terjadi error "Signature mismatch" saat menggunakan SDK?
Terjadi pengecualian berikut:
Error Code: OTSAuthFailed, Message: Signature mismatch., RequestId: 0005f55a-xxxx-xxxx-xxxx-xxxxxxxxxxxx, TraceId: 10b0f0e0-xxxx-xxxx-xxxx-xxxxxxxxxxxx, HttpStatus: 403Penyebab: ID AccessKey atau rahasia AccessKey yang ditentukan saat 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" saat menggunakan SDK?
Pengecualian Request denied by instance ACL policies berikut terjadi saat Anda menggunakan SDK untuk mengakses sumber daya dalam instans Tablestore. Contoh error ditunjukkan 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:]403Penyebab: 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:
Buka Konsol Tablestore dan klik alias instans.
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" saat menggunakan SDK?
Pengecualian Request denied because this instance can only be accessed from the bound VPC berikut terjadi saat Anda menggunakan SDK untuk mengakses sumber daya dalam instans Tablestore. Contoh error ditunjukkan 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:]403Penyebab: 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:
Buka Konsol Tablestore dan klik alias instans.
Klik . Pilih VPC ID dan VSwitch, masukkan VPC Name, lalu klik OK.
Bagaimana cara menggunakan protokol HTTPS untuk mengakses sumber daya Tablestore?
Gunakan versi terbaru SDK Python. Pastikan versi OpenSSL Anda 0.9.8j atau lebih baru. Disarankan menggunakan OpenSSL 1.0.2d.
Apa yang harus dilakukan jika beberapa versi protobuf tidak kompatibel?
Beberapa versi protobuf tidak kompatibel dengan file *pb2.py dalam paket instalasi saat ini. Untuk mengatasi masalah ini, Anda dapat membuat file *pb2.py secara manual dengan langkah-langkah berikut:
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.protoUbah nama ketiga file yang dihasilkan dengan ekstensi
pb2.py. Lalu, salin file-file tersebut ke foldertablestore/protobuf/dalam direktori instalasi untuk menggantikan file*pb2.pyasli.
Bagaimana cara menggunakan tool Credentials untuk membaca kredensial akses?
Jalankan perintah berikut untuk menginstal paket alibabacloud_credentials.
pip install alibabacloud_credentialsKonfigurasikan variabel lingkungan.
Konfigurasikan variabel lingkungan
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRET. Variabel ini merepresentasikan ID AccessKey dan rahasia AccessKey Akun Alibaba Cloud Anda.Baca kredensial akses.
Kode contoh berikut menunjukkan cara 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