Поделиться через


Краткое руководство: клиентская библиотека Azure Cosmos DB для Apache Cassandra для Python

Начало работы с клиентской библиотекой Apache Cassandra для Azure Cosmos DB для Python для хранения, управления и запроса неструктурированных данных. Выполните действия, описанные в этом руководстве, чтобы создать новую учетную запись, установить клиентская библиотека Python, подключиться к учетной записи, выполнить общие операции и запросить окончательные образцы данных.

Справочная документация по | APIИсходный код | библиотекиПакет (PyPI)

Предпосылки

  • Последняя версия Azure CLI в Azure Cloud Shell.

    • Если вы предпочитаете локально запускать справочные команды CLI, войдите в Azure CLI с помощью az login команды.
  • Python 3.12 или более поздней версии

Настройка

Сначала настройте учетную запись и среду разработки для этого руководства. В этом разделе описан процесс создания учетной записи, получения учетных данных и подготовки среды разработки.

Создать аккаунт

Сначала создайте API для учетной записи Apache Cassandra. После создания учетной записи создайте пространство ключей и ресурсы для таблицы.

  1. Если у вас еще нет целевой группы ресурсов, используйте az group create команду для создания новой группы ресурсов в подписке.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create Используйте команду для создания новой учетной записи Azure Cosmos DB для Apache Cassandra с параметрами по умолчанию.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Создайте новое пространство ключей с именем cosmicworks с помощью az cosmosdb cassandra keyspace create.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Создайте новый объект JSON для представления схемы с помощью команды Bash с несколькими строками. Затем используйте az cosmosdb cassandra table create команду, чтобы создать новую таблицу с именем 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"
    

Получение учетных данных

Теперь получите пароль для клиентской библиотеки для создания подключения к недавно созданной учетной записи.

  1. Используйте az cosmosdb show, чтобы получить точку контакта и имя пользователя для учетной записи.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Запишите значение свойств contactPoint и username из вывода предыдущих команд. Эти свойства представляют собой контактную точку и имя пользователя , которое вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.

  3. Используйте az cosmosdb keys list для получения ключей для учетной записи.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Запишите значение primaryMasterKey свойства из выходных данных предыдущих команд. Это значение свойства — это пароль , который вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.

Подготовка среды разработки

Затем настройте среду разработки с новым проектом и клиентской библиотекой. Этот шаг является последним обязательным предварительным условием, прежде чем перейти к остальной части этого руководства.

  1. Начните в пустом каталоге.

  2. cassandra-driver Импортируйте пакет из индекса пакетов Python (PyPI).

    pip install cassandra-driver
    
  3. Создайте файл app.py.

Объектная модель

Описание
Cluster Представляет определенное подключение к кластеру

Примеры кода

Проверка подлинности клиента

Начните с проверки подлинности клиента с помощью учетных данных, собранных ранее в этом руководстве.

  1. Откройте файл app.py в интегрированной среде разработки (IDE).

  2. Импортируйте следующие типы из cassandra-driver модуля:

    • cassandra.cluster.Cluster
    • cassandra.auth.PlainTextAuthProvider
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    
  3. Импортируйте следующие типы из ssl модуля:

    • ssl.PROTOCOL_TLS_CLIENT
    • ssl.SSLContext
    • ssl.CERT_NONE
    from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
    
  4. Создайте строковые переменные для учетных данных, собранных ранее в этом руководстве. Присвойте переменным usernamepasswordи contactPoint.

    username = "<username>"
    password = "<password>"
    contactPoint = "<contact-point>"
    
  5. Настройте SSLContext, создав новую переменную с именем ssl_context, задав протокол PROTOCOL_TLS_CLIENT, отключив проверку имени узла и установив режим проверки CERT_NONE.

    ssl_context = SSLContext(PROTOCOL_TLS_CLIENT)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = CERT_NONE
    
  6. Создайте объект PlainTextAuthProvider с учетными данными, указанными на предыдущих шагах. Сохраните результат в переменной под названием auth_provider.

    auth_provider = PlainTextAuthProvider(username=username, password=password)
    
  7. Cluster Создайте объект с помощью учетных данных и переменных конфигурации, созданных на предыдущих шагах. Сохраните результат в переменной под названием cluster.

    cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)
    
  8. Подключение к кластеру.

    session = cluster.connect("cosmicworks")
    

Предупреждение

Полная проверка уровня транспорта (TLS) отключена в этом руководстве для упрощения проверки подлинности. Для рабочих развертываний полностью включите проверку.

Обновление-вставка данных

Затем переведите новые данные в таблицу. Upserting гарантирует, что данные создаются или заменяются соответствующим образом в зависимости от того, существуют ли те же данные в таблице.

  1. Создайте новую строковую переменную insertQuery с языковым запросом Cassandra (CQL) для вставки новой строки данных.

    insertQuery = """
    INSERT INTO
        product (id, name, category, quantity, price, clearance)
    VALUES
        (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s)
    """
    
  2. Создайте объект с различными свойствами нового продукта и сохраните его в переменной с именем params.

    params = {
        "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "name": "Yamba Surfboard",
        "category": "gear-surf-surfboards",
        "quantity": 12,
        "price": 850.00,
        "clearance": False
    }
    
  3. Используйте функцию execute для выполнения запроса с указанными параметрами.

    session.execute(insertQuery, params)
    

Чтение данных

Затем считывайте данные, которые ранее были добавлены в таблицу.

  1. Создайте новую строковую переменную с именем readQuery, содержащую CQL-запрос, который выбирает элементы с тем же полем id.

    readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"
    
  2. Создайте строковую переменную id с тем же значением, что и продукт, созданный ранее в этом руководстве.

    id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    
  3. Используйте функцию execute для выполнения запроса, хранящегося в readQuery, передав переменную id в качестве аргумента. Сохраните результат в переменной под названием readResults.

    readResults = session.execute(readQuery, (id,))
    
  4. Используйте функцию one получения ожидаемого единого результата. Сохраните этот один результат в переменной с именем matchedProduct.

    matchedProduct = readResults.one()
    

Запрос данных

Наконец, используйте запрос, чтобы найти все данные, соответствующие определенному фильтру в таблице.

  1. Создайте строковые переменные с именем findQuery и category с помощью запроса CQL и обязательного параметра.

    findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING"
    category = "gear-surf-surfboards"
    
  2. Используйте две строковые переменные и execute функцию для запроса нескольких результатов. Сохраните результат этого запроса в переменной с именем findResults.

    findResults = session.execute(findQuery, (category,))
    
  3. for Используйте цикл для итерации результатов запроса.

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

Запустите код

Запустите созданное приложение с помощью терминала в каталоге приложения.

python app.py

Очистите ресурсы

Если учетная запись больше не нужна, удалите учетную запись из подписки Azure, удалив ресурс.

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

Следующий шаг