Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Начало работы с клиентской библиотекой Apache Cassandra для Azure Cosmos DB для Python для хранения, управления и запроса неструктурированных данных. Выполните действия, описанные в этом руководстве, чтобы создать новую учетную запись, установить клиентская библиотека Python, подключиться к учетной записи, выполнить общие операции и запросить окончательные образцы данных.
Справочная документация по | APIИсходный код | библиотекиПакет (PyPI)
Предпосылки
подписка Azure
- Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Последняя версия Azure CLI в Azure Cloud Shell.
- Если вы предпочитаете локально запускать справочные команды CLI, войдите в Azure CLI с помощью
az loginкоманды.
- Если вы предпочитаете локально запускать справочные команды CLI, войдите в Azure CLI с помощью
- Python 3.12 или более поздней версии
Настройка
Сначала настройте учетную запись и среду разработки для этого руководства. В этом разделе описан процесс создания учетной записи, получения учетных данных и подготовки среды разработки.
Создать аккаунт
Сначала создайте API для учетной записи Apache Cassandra. После создания учетной записи создайте пространство ключей и ресурсы для таблицы.
Если у вас еще нет целевой группы ресурсов, используйте
az group createкоманду для создания новой группы ресурсов в подписке.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createИспользуйте команду для создания новой учетной записи Azure Cosmos DB для Apache Cassandra с параметрами по умолчанию.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Создайте новое пространство ключей с именем
az cosmosdb cassandra keyspace createс помощьюcosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Создайте новый объект 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"
Получение учетных данных
Теперь получите пароль для клиентской библиотеки для создания подключения к недавно созданной учетной записи.
Используйте
az cosmosdb show, чтобы получить точку контакта и имя пользователя для учетной записи.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Запишите значение свойств
contactPointиusernameиз вывода предыдущих команд. Эти свойства представляют собой контактную точку и имя пользователя , которое вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.Используйте
az cosmosdb keys listдля получения ключей для учетной записи.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Запишите значение
primaryMasterKeyсвойства из выходных данных предыдущих команд. Это значение свойства — это пароль , который вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.
Подготовка среды разработки
Затем настройте среду разработки с новым проектом и клиентской библиотекой. Этот шаг является последним обязательным предварительным условием, прежде чем перейти к остальной части этого руководства.
Начните в пустом каталоге.
cassandra-driverИмпортируйте пакет из индекса пакетов Python (PyPI).pip install cassandra-driverСоздайте файл app.py.
Объектная модель
| Описание | |
|---|---|
Cluster |
Представляет определенное подключение к кластеру |
Примеры кода
Проверка подлинности клиента
Начните с проверки подлинности клиента с помощью учетных данных, собранных ранее в этом руководстве.
Откройте файл app.py в интегрированной среде разработки (IDE).
Импортируйте следующие типы из
cassandra-driverмодуля:cassandra.cluster.Clustercassandra.auth.PlainTextAuthProvider
from cassandra.cluster import Cluster from cassandra.auth import PlainTextAuthProviderИмпортируйте следующие типы из
sslмодуля:ssl.PROTOCOL_TLS_CLIENTssl.SSLContextssl.CERT_NONE
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONEСоздайте строковые переменные для учетных данных, собранных ранее в этом руководстве. Присвойте переменным
usernamepasswordиcontactPoint.username = "<username>" password = "<password>" contactPoint = "<contact-point>"Настройте
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Создайте объект
PlainTextAuthProviderс учетными данными, указанными на предыдущих шагах. Сохраните результат в переменной под названиемauth_provider.auth_provider = PlainTextAuthProvider(username=username, password=password)ClusterСоздайте объект с помощью учетных данных и переменных конфигурации, созданных на предыдущих шагах. Сохраните результат в переменной под названиемcluster.cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)Подключение к кластеру.
session = cluster.connect("cosmicworks")
Предупреждение
Полная проверка уровня транспорта (TLS) отключена в этом руководстве для упрощения проверки подлинности. Для рабочих развертываний полностью включите проверку.
Обновление-вставка данных
Затем переведите новые данные в таблицу. Upserting гарантирует, что данные создаются или заменяются соответствующим образом в зависимости от того, существуют ли те же данные в таблице.
Создайте новую строковую переменную
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) """Создайте объект с различными свойствами нового продукта и сохраните его в переменной с именем
params.params = { "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "name": "Yamba Surfboard", "category": "gear-surf-surfboards", "quantity": 12, "price": 850.00, "clearance": False }Используйте функцию
executeдля выполнения запроса с указанными параметрами.session.execute(insertQuery, params)
Чтение данных
Затем считывайте данные, которые ранее были добавлены в таблицу.
Создайте новую строковую переменную с именем
readQuery, содержащую CQL-запрос, который выбирает элементы с тем же полемid.readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"Создайте строковую переменную
idс тем же значением, что и продукт, созданный ранее в этом руководстве.id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Используйте функцию
executeдля выполнения запроса, хранящегося вreadQuery, передав переменнуюidв качестве аргумента. Сохраните результат в переменной под названиемreadResults.readResults = session.execute(readQuery, (id,))Используйте функцию
oneполучения ожидаемого единого результата. Сохраните этот один результат в переменной с именемmatchedProduct.matchedProduct = readResults.one()
Запрос данных
Наконец, используйте запрос, чтобы найти все данные, соответствующие определенному фильтру в таблице.
Создайте строковые переменные с именем
findQueryиcategoryс помощью запроса CQL и обязательного параметра.findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING" category = "gear-surf-surfboards"Используйте две строковые переменные и
executeфункцию для запроса нескольких результатов. Сохраните результат этого запроса в переменной с именемfindResults.findResults = session.execute(findQuery, (category,))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>"