Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Introdução à biblioteca de cliente do Azure Cosmos DB para Apache Cassandra para Python para armazenar, gerenciar e consultar dados não estruturados. Siga as etapas neste guia para criar uma nova conta, instalar uma biblioteca de cliente Python, conectar-se à conta, executar operações comuns e consultar seus dados de exemplo finais.
Documentação de referência da API | Código fonte da biblioteca | Pacote (PyPI)
Pré-requisitos
Uma assinatura do Azure
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
A versão mais recente da CLI do Azure no Azure Cloud Shell.
- Se preferir executar comandos de referência da CLI localmente, entre na CLI do Azure usando o
az logincomando.
- Se preferir executar comandos de referência da CLI localmente, entre na CLI do Azure usando o
- Python 3.12 ou posterior
Preparação
Primeiro, configure a conta e o ambiente de desenvolvimento para este guia. Esta seção orienta você pelo processo de criação de uma conta, obtenção de suas credenciais e, em seguida, preparação do ambiente de desenvolvimento.
Criar uma conta
Comece criando uma API para a conta Apache Cassandra. Depois que a conta for criada, crie o keyspace e os recursos da tabela.
- Azure CLI
- portal do Azure
Se você ainda não tiver um grupo de recursos de destino, use o
az group createcomando para criar um novo grupo de recursos em sua assinatura.az group create \ --name "<resource-group-name>" \ --location "<location>"Use o
az cosmosdb createcomando para criar uma nova conta do Azure Cosmos DB para Apache Cassandra com configurações padrão.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Crie um novo espaço de chave chamado
az cosmosdb cassandra keyspace createusandocosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Crie um novo objeto JSON para representar seu esquema usando um comando Bash de várias linhas. Em seguida, use o
az cosmosdb cassandra table createcomando para criar uma nova tabela chamadaproducts.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"
Obter credenciais
Agora, obtenha a palavra-passe da biblioteca do cliente para usar e criar uma conexão com a conta criada recentemente.
- Azure CLI
- portal do Azure
Use
az cosmosdb showpara obter o ponto de contato e o nome de usuário da conta.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Registe o valor das propriedades
contactPointeusernameda saída dos comandos anteriores. Os valores dessas propriedades são o ponto de contato e o nome de usuário que você usa posteriormente neste guia para se conectar à conta com a biblioteca.Use
az cosmosdb keys listpara obter as chaves da conta.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Registe o valor da propriedade
primaryMasterKeya partir da saída dos comandos anteriores. O valor dessa propriedade é a senha que você usa posteriormente neste guia para se conectar à conta com a biblioteca.
Preparar o ambiente de desenvolvimento
Em seguida, configure seu ambiente de desenvolvimento com um novo projeto e a biblioteca do cliente. Esta etapa é o último pré-requisito necessário antes de passar para o resto deste guia.
Comece em um diretório vazio.
Importe o
cassandra-driverpacote do Python Package Index (PyPI).pip install cassandra-driverCrie o arquivo app.py .
Modelo de objeto
| Descrição | |
|---|---|
Cluster |
Representa uma conexão específica com um cluster |
Exemplos de código
Autenticar cliente
Comece autenticando o cliente usando as credenciais reunidas anteriormente neste guia.
Abra o arquivo app.py em seu ambiente de desenvolvimento integrado (IDE).
Importe os seguintes tipos do
cassandra-drivermódulo:cassandra.cluster.Clustercassandra.auth.PlainTextAuthProvider
from cassandra.cluster import Cluster from cassandra.auth import PlainTextAuthProviderImporte os seguintes tipos do
sslmódulo:ssl.PROTOCOL_TLS_CLIENTssl.SSLContextssl.CERT_NONE
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONECrie variáveis de cadeia de caracteres para as credenciais coletadas anteriormente neste guia. Nomeie as variáveis
username,passwordecontactPoint.username = "<username>" password = "<password>" contactPoint = "<contact-point>"Configure o
SSLContextcriando uma nova variável chamadassl_context, definindo o protocolo comoPROTOCOL_TLS_CLIENT, desativando a verificação de nome de host e definindo o modo de verificação comoCERT_NONE.ssl_context = SSLContext(PROTOCOL_TLS_CLIENT) ssl_context.check_hostname = False ssl_context.verify_mode = CERT_NONECrie um novo
PlainTextAuthProviderobjeto com as credenciais especificadas nas etapas anteriores. Armazene o resultado em uma variável chamadaauth_provider.auth_provider = PlainTextAuthProvider(username=username, password=password)Crie um
Clusterobjeto usando as variáveis de credencial e configuração criadas nas etapas anteriores. Armazene o resultado em uma variável chamadacluster.cluster = Cluster([contactPoint], port=10350, auth_provider=auth_provider, ssl_context=ssl_context)Conecte-se ao cluster.
session = cluster.connect("cosmicworks")
Advertência
A validação completa da segurança da camada de transporte (TLS) está desativada neste guia para simplificar a autenticação. Para implantações de produção, habilite totalmente a validação.
Atualizar ou inserir dados
Em seguida, atualize novos dados para uma tabela. A atualização garante que os dados sejam criados ou substituídos adequadamente, dependendo se os mesmos dados já existem na tabela.
Crie uma nova variável de cadeia de caracteres nomeada
insertQuerycom a consulta Cassandra Query Language (CQL) para inserir uma nova linha.insertQuery = """ INSERT INTO product (id, name, category, quantity, price, clearance) VALUES (%(id)s, %(name)s, %(category)s, %(quantity)s, %(price)s, %(clearance)s) """Crie um novo objeto com várias propriedades de um novo produto e armazene-o em uma variável chamada
params.params = { "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "name": "Yamba Surfboard", "category": "gear-surf-surfboards", "quantity": 12, "price": 850.00, "clearance": False }Use a
executefunção para executar a consulta com os parâmetros especificados.session.execute(insertQuery, params)
Ler dados
Em seguida, leia os dados que foram inseridos anteriormente na tabela.
Crie uma nova variável de cadeia de caracteres nomeada
readQuerycom uma consulta CQL que corresponda a itens com o mesmoidcampo.readQuery = "SELECT * FROM product WHERE id = %s LIMIT 1"Crie uma variável de cadeia de caracteres nomeada
idcom o mesmo valor do produto criado anteriormente neste guia.id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Use a
executefunção para executar a consulta armazenada nareadQuery, passando a variávelidcomo um argumento. Armazene o resultado em uma variável chamadareadResults.readResults = session.execute(readQuery, (id,))Use a função
onepara obter o resultado único esperado. Armazene esse único resultado em uma variável chamadamatchedProduct.matchedProduct = readResults.one()
Consultar dados
Por fim, use uma consulta para localizar todos os dados que correspondem a um filtro específico na tabela.
Crie variáveis string nomeadas
findQueryecategorycom a consulta CQL e o parâmetro necessário.findQuery = "SELECT * FROM product WHERE category = %s ALLOW FILTERING" category = "gear-surf-surfboards"Use as duas variáveis de cadeia de caracteres e a
executefunção para consultar vários resultados. Armazene o resultado dessa consulta em uma variável chamadafindResults.findResults = session.execute(findQuery, (category,))Utilize um
forloop para iterar pelos resultados da consulta.for row in findResults: # Do something here with each result
Execute o código
Execute o aplicativo recém-criado usando um terminal no diretório do aplicativo.
python app.py
Limpeza de recursos
Quando você não precisar mais da conta, remova a conta da sua assinatura do Azure excluindo o recurso.
- Azure CLI
- portal do Azure
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"