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.
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 tablestoreInstal dari GitHub
Unduh Tablestore SDK dari GitHub menggunakan perintah git, lalu 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.
python3 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.
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
-
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 -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrc -
Jalankan 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 $SHELL -
Lakukan 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'" >> ~/.zshrc -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrc -
Jalankan 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_profile -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profile -
Jalankan 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 client
Kode berikut menginisialisasi klien Tablestore dan mencantumkan semua tabel data serta tabel deret waktu dalam instans tertentu untuk memverifikasi 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 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 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. 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
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_rangekini mencakup parametermax_version and time_range. Anda harus menentukan minimal salah satu dari dua parameter tersebut.Operasi seperti
put_row,update_row, dandelete_rowkini mendukung parameterreturn_type. Satu-satunya nilai yang didukung untuk parameter ini adalahRT_PK, yang menentukan bahwa nilai kembali mencakup primary key (PK) dari baris tersebut.Operasi seperti
put_row,update_row, dandelete_rowkini mencakup fieldreturn_rowdalam nilai kembalinya. Jika Anda menyetel parameterreturn_typekeRT_PKdalam permintaan, fieldreturn_rowakan berisi nilaiPKdari 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:
-
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"?
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:
-
Buka Konsol Tablestore dan klik alias instans.
-
Klik . 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:
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.
Gunakan tool Credentials untuk membaca kredensial akses
Jalankan perintah berikut untuk menginstal paket alibabacloud_credentials.
pip3 install alibabacloud_credentialsKonfigurasikan variabel lingkungan.
Setel variabel lingkungan
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRETke ID AccessKey dan rahasia AccessKey Akun Alibaba Cloud Anda.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