Aracılığıyla paylaş


Hızlı Başlangıç: Python için Apache Cassandra istemci kitaplığı için Azure Cosmos DB

Yapılandırılmamış verileri depolamak, yönetmek ve sorgulamak için Python için Apache Cassandra için Azure Cosmos DB istemci kitaplığını kullanmaya başlayın. Yeni bir hesap oluşturmak, Python istemci kitaplığı yüklemek, hesaba bağlanmak, yaygın işlemler gerçekleştirmek ve son örnek verilerinizi sorgulamak için bu kılavuzdaki adımları izleyin.

API başvuru belgeleri | Kitaplık kaynak kodu | Paket (PyPI)

Önkoşullar

  • Azure aboneliği

  • Azure Cloud Shell'deAzure CLI'nın en son sürümü.

    • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız komutunu kullanarak az login Azure CLI'da oturum açın.
  • Python 3.12 veya üzeri

Kurulum

İlk olarak, bu kılavuz için hesap ve geliştirme ortamını ayarlayın. Bu bölümde hesap oluşturma, kimlik bilgilerini alma ve geliştirme ortamınızı hazırlama işlemi boyunca size yol gösterilir.

Hesap oluştur

Apache Cassandra hesabı için bir API oluşturarak başlayın. Hesap oluşturulduktan sonra anahtar alanını ve tablo kaynaklarını oluşturun.

  1. Henüz bir hedef kaynak grubunuz yoksa, aboneliğinizde yeni bir kaynak grubu oluşturmak için komutunu kullanın az group create .

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. Varsayılan ayarlarla az cosmosdb create Apache Cassandra için yeni bir Azure Cosmos DB hesabı oluşturmak için komutunu kullanın.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. az cosmosdb cassandra keyspace create kullanarak cosmicworks adlı yeni bir anahtar alanı oluşturun.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Çok satırlı bash komutunu kullanarak şemanızı temsil eden yeni bir JSON nesnesi oluşturun. Ardından komutunu kullanarak az cosmosdb cassandra table create adlı productsyeni bir tablo oluşturun.

    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"
    

Kimlik bilgilerini alma

Şimdi, son oluşturulan hesaba bağlantı oluşturmak için kullanılacak istemci kitaplığının parolasını alın.

  1. Hesabın iletişim noktası ve kullanıcı adını almak için az cosmosdb show kullanın.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Önceki komutların çıkışındaki contactPoint ve username özelliklerinin değerlerini kaydedin. Bu özelliklerin değerleri, bu kılavuzun devamında kitaplığa bağlanmak için kullandığınız kişi noktası ve kullanıcı adıdır .

  3. az cosmosdb keys list, hesabın anahtarlarını almak için kullanın.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Önceki komutların çıkışından primaryMasterKey özelliğinin değerini kaydedin. Bu özelliğin değeri, bu kılavuzun ilerleyen bölümlerinde kitaplığa bağlanmak için kullandığınız paroladır .

Geliştirme ortamını hazırlama

Ardından geliştirme ortamınızı yeni bir proje ve istemci kitaplığıyla yapılandırın. Bu adım, bu kılavuzun geri kalanına geçmeden önce gereken son önkoşuldur.

  1. Boş bir klasörde başlayın.

  2. cassandra-driver Paketi Python Paket Dizini'nden (PyPI) içeri aktarın.

    pip install cassandra-driver
    
  3. app.py dosyasını oluşturun.

Nesne modeli

Açıklama
Cluster Kümeye belirli bir bağlantıyı temsil eder

Kod örnekleri

İstemcinin kimliğini doğrulama

Bu kılavuzda daha önce toplanan kimlik bilgilerini kullanarak istemcinin kimliğini doğrulayarak başlayın.

  1. tümleşik geliştirme ortamınızda (IDE) app.py dosyasını açın.

  2. Modülden aşağıdaki türleri içeri aktarın cassandra-driver :

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Modülden aşağıdaki türleri içeri aktarın ssl :

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Bu kılavuzun önceki bölümlerinde toplanan kimlik bilgileri için dize değişkenleri oluşturun. Değişkenleri username, passwordve contactPointolarak adlandırın.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. SSLContext adlı ssl_contextyeni bir değişken oluşturarak, protokol PROTOCOL_TLS_CLIENTolarak ayarlayın, konak adı denetimini devre dışı bırakın ve doğrulama modunu olarak CERT_NONEayarlayın.

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Önceki adımlarda belirtilen kimlik bilgileriyle yeni PlainTextAuthProvider bir nesne oluşturun. Sonucu adlı auth_providerbir değişkende depolayın.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Önceki adımlarda oluşturulan kimlik bilgilerini ve yapılandırma değişkenlerini kullanarak bir Cluster nesne oluşturun. Sonucu adlı clusterbir değişkende depolayın.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Kümeye bağlanın.

    session = cluster.connect("cosmicworks")
    

Uyarı

Kimlik doğrulamasını basitleştirmek için bu kılavuzda tam aktarım katmanı güvenliği (TLS) doğrulaması devre dışı bırakılmıştır. Üretim dağıtımları için doğrulamayı tam olarak etkinleştirin.

Verileri ekleme ve güncelleme

Ardından, yeni verileri bir tabloya ekle. Yükseltme, aynı verilerin tabloda zaten var olup olmadığına bağlı olarak verilerin uygun şekilde oluşturulmasını veya değiştirilmesini sağlar.

  1. Yeni satır eklemek için Cassandra Sorgu Dili (CQL) sorgusuyla adlı insertQuery yeni bir dize değişkeni oluşturun.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Yeni bir ürünün çeşitli özelliklerine sahip yeni bir nesne oluşturun ve adlı paramsbir değişkende depolayın.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. Sorguyu execute belirtilen parametrelerle çalıştırmak için işlevini kullanın.

    session.execute(insertQuery, params)
    

Veriyi oku

Ardından, tabloya daha önce yüklenmiş olan verileri okuyun.

  1. Aynı readQuery alana sahip öğelerle eşleşen bir CQL sorgusuyla adlı id yeni bir dize değişkeni oluşturun.

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Bu kılavuzun önceki bölümlerinde oluşturulan ürünle aynı değere sahip adlı id bir dize değişkeni oluşturun.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. execute işlevini, readQuery değişkenini bağımsız değişken olarak geçirerek depolanan id sorgusunu çalıştırmak için kullanın. Sonucu adlı readResultsbir değişkende depolayın.

    readResults = session.execute(readQuery, (id,))
    
  4. İşlevi one kullanarak beklenen tek sonucu alın. Bu tek sonucu adlı matchedProductbir değişkende depolayın.

    matchedProduct = readResults.one()
    

Sorgu verileri

Son olarak, tablodaki belirli bir filtreyle eşleşen tüm verileri bulmak için bir sorgu kullanın.

  1. "findQuery ve category adında, CQL sorgusu ve gerekli parametrelerle dize değişkenleri oluşturun."

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. Birden çok sonucu sorgulamak için iki dize değişkenini execute ve işlevini kullanın. Bu sorgunun sonucunu adlı findResultsbir değişkende depolayın.

    findResults = session.execute(findQuery, (category,))
    
  3. Sorgu sonuçlarını yinelemek için bir for döngü kullanın.

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

Kodu çalıştır

Uygulama dizininizde bir terminal kullanarak yeni oluşturulan uygulamayı çalıştırın.

python app.py

Kaynakları temizle

Hesaba artık ihtiyacınız kalmadığında, kaynağı silerek hesabı Azure aboneliğinizden kaldırın.

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

Sonraki adım