Bagikan melalui


Mulai cepat: Pustaka klien Azure Cosmos DB untuk Apache Cassandra untuk Python

Mulai menggunakan pustaka klien Azure Cosmos DB for Apache Cassandra agar Python menyimpan, mengelola, dan mengkueri data yang tidak terstruktur. Ikuti langkah-langkah dalam panduan ini untuk membuat akun baru, menginstal pustaka klien Python, menyambungkan ke akun, melakukan operasi umum, dan mengkueri data sampel akhir Anda.

Dokumentasi referensi API | Kode sumber pustaka | Paket (PyPI)

Prasyarat

  • Langganan Azure

    • Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
  • Versi terbaru Azure CLI di Azure Cloud Shell.

    • Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, masuk ke Azure CLI dengan menggunakan az login perintah .
  • Python 3.12 atau yang lebih baru

Persiapan

Pertama, siapkan akun dan lingkungan pengembangan untuk panduan ini. Bagian ini memandu Anda melalui proses pembuatan akun, mendapatkan kredensial akun, lalu menyiapkan lingkungan pengembangan Anda.

Buat akun

Mulailah dengan membuat API untuk akun Apache Cassandra. Setelah akun dibuat, buat keyspace dan sumber daya tabel.

  1. Jika Anda belum memiliki grup sumber daya target, gunakan az group create perintah untuk membuat grup sumber daya baru di langganan Anda.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create Gunakan perintah untuk membuat akun Azure Cosmos DB for Apache Cassandra baru dengan pengaturan default.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Buat keyspace baru menggunakan az cosmosdb cassandra keyspace create bernama cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Buat objek JSON baru untuk mewakili skema Anda menggunakan perintah Bash multibaris. Kemudian, gunakan az cosmosdb cassandra table create perintah untuk membuat tabel baru bernama products.

    schemaJson=$(cat <<EOF
    {
      "columns": [
        {
          "name": "id",
          "type": "text"
        },
        {
          "name": "name",
          "type": "text"
        },
        {
          "name": "category",
          "type": "text"
        },
        {
          "name": "quantity",
          "type": "int"
        },
        {
          "name": "price",
          "type": "decimal"
        },
        {
          "name": "clearance",
          "type": "boolean"
        }
      ],
      "partitionKeys": [
        {
          "name": "id"
        }
      ]
    }
    EOF
    )
    
    az cosmosdb cassandra table create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --keyspace-name "cosmicworks" \
        --name "product" \
        --schema "$schemaJson"
    

Mendapatkan kredensial

Sekarang, dapatkan kata sandi untuk pustaka klien yang akan digunakan guna membuat koneksi ke akun yang baru saja dibuat.

  1. Gunakan az cosmosdb show untuk mendapatkan titik kontak dan nama pengguna untuk akun tersebut.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Catat nilai contactPoint dan username properti dari keluaran perintah sebelumnya. Nilai properti ini adalah titik kontak dan nama pengguna yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.

  3. Gunakan az cosmosdb keys list untuk mendapatkan kunci untuk akun tersebut.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Catat nilai primaryMasterKey properti dari output perintah sebelumnya. Nilai properti ini adalah kata sandi yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.

Menyiapkan lingkungan pengembangan

Kemudian, konfigurasikan lingkungan pengembangan Anda dengan proyek baru dan pustaka klien. Langkah ini adalah prasyarat terakhir yang diperlukan sebelum beralih ke sisa panduan ini.

  1. Mulai di direktori kosong.

  2. cassandra-driver Impor paket dari Indeks Paket Python (PyPI).

    pip install cassandra-driver
    
  3. Buat file app.py.

Model objek

Deskripsi
Cluster Mewakili koneksi tertentu ke kluster

Contoh kode

Mengautentikasi klien

Mulailah dengan mengautentikasi klien menggunakan kredensial yang dikumpulkan sebelumnya dalam panduan ini.

  1. Buka file app.py di lingkungan pengembangan terintegrasi (IDE) Anda.

  2. Impor jenis berikut dari cassandra-driver modul:

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Impor jenis berikut dari ssl modul:

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Buat variabel string untuk kredensial yang dikumpulkan sebelumnya dalam panduan ini. Beri nama variabel username, , passworddan contactPoint.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. SSLContext Konfigurasikan dengan membuat variabel baru bernama ssl_context, mengatur protokol ke PROTOCOL_TLS_CLIENT, menonaktifkan pemeriksaan nama host, dan mengatur mode verifikasi ke CERT_NONE.

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Buat objek baru PlainTextAuthProvider dengan kredensial yang ditentukan di langkah sebelumnya. Simpan hasilnya di variabel bernama auth_provider.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Buat Cluster objek menggunakan variabel kredensial dan konfigurasi yang dibuat di langkah-langkah sebelumnya. Simpan hasilnya di variabel bernama cluster.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Sambungkan ke kluster.

    session = cluster.connect("cosmicworks")
    

Peringatan

Validasi keamanan lapisan transportasi (TLS) lengkap dinonaktifkan dalam panduan ini untuk menyederhanakan autentikasi. Untuk penyebaran produksi, aktifkan validasi sepenuhnya.

Memasukkan atau memperbarui data

Selanjutnya, upsert data baru ke dalam tabel. Upserting memastikan bahwa data dibuat atau diganti dengan tepat tergantung pada apakah data yang sama sudah ada dalam tabel.

  1. Buat variabel string baru bernama insertQuery dengan kueri Cassandra Query Language (CQL) untuk menyisipkan baris baru.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Buat objek baru dengan berbagai properti produk baru dan simpan dalam variabel bernama params.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. execute Gunakan fungsi untuk menjalankan kueri dengan parameter yang ditentukan.

    session.execute(insertQuery, params)
    

Baca data

Kemudian, baca data yang sebelumnya diupsert ke dalam tabel.

  1. Buat variabel string baru bernama readQuery dengan kueri CQL yang cocok dengan item dengan bidang yang sama id .

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Buat variabel string bernama id dengan nilai yang sama dengan produk yang dibuat sebelumnya dalam panduan ini.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. Gunakan fungsi execute untuk menjalankan kueri yang disimpan dalam readQuery dengan meneruskan variabel id sebagai argumen. Simpan hasilnya di variabel bernama readResults.

    readResults = session.execute(readQuery, (id,))
    
  4. Gunakan fungsi one untuk mendapatkan hasil tunggal yang diharapkan. Simpan satu hasil ini dalam variabel bernama matchedProduct.

    matchedProduct = readResults.one()
    

Mencari data

Terakhir, gunakan kueri untuk menemukan semua data yang cocok dengan filter tertentu dalam tabel.

  1. Buat variabel string bernama findQuery dan category dengan kueri CQL dan parameter yang diperlukan.

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. Gunakan dua variabel string dan execute fungsi untuk mengkueri beberapa hasil. Simpan hasil kueri ini dalam variabel bernama findResults.

    findResults = session.execute(findQuery, (category,))
    
  3. Gunakan perulangan for untuk melakukan iterasi atas hasil kueri.

    for row in findResults:
        # Do something here with each result
    

Menjalankan kode

Jalankan aplikasi yang baru dibuat menggunakan terminal di direktori aplikasi Anda.

python app.py

Membersihkan sumber daya

Saat Anda tidak lagi memerlukan akun, hapus akun dari langganan Azure Anda dengan menghapus sumber daya.

az cosmosdb delete \
    --resource-group "<resource-group-name>" \
    --name "<account-name>"

Langkah selanjutnya