Biblioteca de clientes das Tabelas do Azure para Python – versão 12.4.4
As Tabelas do Azure são um serviço de armazenamento de dados NoSQL que pode ser acessado de qualquer lugar do mundo por meio de chamadas autenticadas usando HTTP ou HTTPS.
As tabelas são dimensionadas conforme necessário para dar suporte à quantidade de dados inseridos e permitir o armazenamento de dados com acesso não complexo.
O cliente tabelas do Azure pode ser usado para acessar contas do Armazenamento do Azure ou do Cosmos. Este documento aborda azure-data-tables
.
Observe que esse pacote é uma substituição para azure-cosmosdb-tables
a qual agora foi preterido. Consulte o guia de migração para obter mais detalhes.
Código-fonte | Pacote (PyPI) | Pacote (Conda) | Documentação | de referência da APIAmostras
Aviso de isenção de responsabilidade
O suporte a pacotes python do SDK do Azure para Python 2.7 terminou em 01 de janeiro de 2022. Para obter mais informações e perguntas, consulte https://github.com/Azure/azure-sdk-for-python/issues/20691Python 3.7 ou posterior é necessário para usar esse pacote. Para obter mais detalhes, consulte a política de suporte do SDK do Azure para Python.
Introdução
O SDK de Tabelas do Azure pode acessar uma conta do Armazenamento do Azure ou do CosmosDB.
Pré-requisitos
- É necessário ter o Python 3.7 ou posterior para usar esse pacote.
- Você deve ter uma assinatura do Azure e qualquer uma
- uma conta de Armazenamento do Azure ou
- uma conta do Azure Cosmos.
Criar conta
- Para criar uma nova conta de armazenamento, você pode usar o Portal do Azure, Azure PowerShell ou a CLI do Azure:
- Para criar uma nova conta de armazenamento do Cosmos, você pode usar a CLI do Azure ou o Portal do Azure.
Instalar o pacote
Instale a biblioteca de clientes das Tabelas do Azure para Python com pip:
pip install azure-data-tables
Crie o cliente
A biblioteca tabelas do Azure permite que você interaja com dois tipos de recursos:
- as tabelas em sua conta
- as entidades dentro dessas tabelas.
A interação com esses recursos começa com uma instância de um cliente. Para criar um objeto cliente, você precisará da URL do ponto de extremidade de serviço de tabela da conta e de uma credencial que permita acessar a conta. O
endpoint
pode ser encontrado na página da sua conta de armazenamento no Portal do Azure na seção "Chaves de Acesso" ou executando o seguinte comando da CLI do Azure:
# Get the table service URL for the account
az storage account show -n mystorageaccount -g MyResourceGroup --query "primaryEndpoints.table"
Depois que você tiver a URL da conta, ela poderá ser usada para criar o cliente de serviço:
from azure.data.tables import TableServiceClient
service = TableServiceClient(endpoint="https://<my_account_name>.table.core.windows.net/", credential=credential)
Para obter mais informações sobre URLs de serviço de tabela e como configurar nomes de domínio personalizados para o Armazenamento do Azure marcar a documentação oficial
Tipos de credenciais
O credential
parâmetro pode ser fornecido em várias formas diferentes, dependendo do tipo de autorização que você deseja usar. A biblioteca Tabelas dá suporte às seguintes autorizações:
- Chave compartilhada
- Cadeia de conexão
- Token de Assinatura de Acesso Compartilhado
Criando o cliente a partir de uma chave compartilhada
Para usar uma chave compartilhada de conta (também conhecida como chave de conta ou chave de acesso), forneça a chave como uma cadeia de caracteres. Isso pode ser encontrado em sua conta de armazenamento no Portal do Azure na seção "Chaves de Acesso" ou executando o seguinte comando da CLI do Azure:
az storage account keys list -g MyResourceGroup -n MyStorageAccount
Use a chave como o parâmetro de credencial para autenticar o cliente:
from azure.core.credentials import AzureNamedKeyCredential
from azure.data.tables import TableServiceClient
credential = AzureNamedKeyCredential("my_account_name", "my_access_key")
service = TableServiceClient(endpoint="https://<my_account_name>.table.core.windows.net", credential=credential)
Criando o cliente a partir de uma cadeia de conexão
Dependendo do caso de uso e do método de autorização, talvez você prefira inicializar uma instância do cliente com uma cadeia de conexão em vez de fornecer a URL da conta e a credencial separadamente. Para fazer isso, passe a cadeia de conexão para o método de classe do from_connection_string
cliente. A cadeia de conexão pode ser encontrada em sua conta de armazenamento no Portal do Azure na seção "Chaves de Acesso" ou com o seguinte comando da CLI do Azure:
az storage account show-connection-string -g MyResourceGroup -n MyStorageAccount
from azure.data.tables import TableServiceClient
connection_string = "DefaultEndpointsProtocol=https;AccountName=<my_account_name>;AccountKey=<my_account_key>;EndpointSuffix=core.windows.net"
service = TableServiceClient.from_connection_string(conn_str=connection_string)
Criando o cliente com base em um token SAS
Para usar um token SAS (assinatura de acesso compartilhado), forneça o token como uma cadeia de caracteres. Se a URL da conta incluir o token SAS, omita o parâmetro de credencial. Você pode gerar um token SAS do Portal do Azure em Assinatura de acesso compartilhado ou usar uma das generate_*_sas()
funções para criar um token sas para a conta ou tabela:
from datetime import datetime, timedelta
from azure.data.tables import TableServiceClient, generate_account_sas, ResourceTypes, AccountSasPermissions
from azure.core.credentials import AzureNamedKeyCredential, AzureSasCredential
credential = AzureNamedKeyCredential("my_account_name", "my_access_key")
sas_token = generate_account_sas(
credential,
resource_types=ResourceTypes(service=True),
permission=AccountSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1),
)
table_service_client = TableServiceClient(endpoint="https://<my_account_name>.table.core.windows.net", credential=AzureSasCredential(sas_token))
Principais conceitos
Usos comuns do serviço Tabela incluídos:
- Armazenamento de TBs de dados estruturados capazes de atender a aplicativos de dimensionamento da Web
- Armazenar conjuntos de dados que não exigem junções complexas, chaves estrangeiras ou procedimentos armazenados e podem ser des normalizados para acesso rápido
- Consulta rápida de dados usando um índice clusterizado
- Acessando dados usando o protocolo OData e expressões de filtro LINQ
Os seguintes componentes compõem o Serviço de Tabelas do Azure:
- A conta
- Uma tabela dentro da conta, que contém um conjunto de entidades
- Uma entidade dentro de uma tabela, como um dicionário
A biblioteca de clientes das Tabelas do Azure para Python permite que você interaja com cada um desses componentes por meio do uso de um objeto cliente dedicado.
Clientes
Dois clientes diferentes são fornecidos para interagir com os vários componentes do Serviço de Tabela:
TableServiceClient
-- Obter e definir a configuração da conta
- Consultar, criar e excluir tabelas dentro da conta.
- Obtenha um
TableClient
para acessar uma tabela específica usando oget_table_client
método .
TableClient
-- Interage com uma tabela específica (que ainda não precisa existir).
- Criar, excluir, consultar e upsert entidades dentro da tabela especificada.
- Crie ou exclua a tabela especificada em si.
Entities
As entidades são semelhantes às linhas. Uma entidade tem um PartitionKey
, um RowKey
e um conjunto de propriedades. Uma propriedade é um par de valores de nome, semelhante a uma coluna. Todas as entidades em uma tabela não precisam ter as mesmas propriedades. As entidades podem ser representadas como dicionários como este como um exemplo:
entity = {
'PartitionKey': 'color',
'RowKey': 'brand',
'text': 'Marker',
'color': 'Purple',
'price': '5'
}
- create_entity – Adicionar uma entidade à tabela.
- delete_entity – exclua uma entidade da tabela.
- update_entity – atualize as informações de uma entidade mesclando ou substituindo a entidade existente.
UpdateMode.MERGE
adicionará novas propriedades a uma entidade existente que não excluirá uma propriedade existenteUpdateMode.REPLACE
substituirá a entidade existente pela determinada, excluindo todas as propriedades existentes não incluídas na entidade enviada
- query_entities – Consultar entidades existentes em uma tabela usando filtros OData.
- get_entity – Obter uma entidade específica de uma tabela por partição e chave de linha.
- upsert_entity - Mesclar ou substituir uma entidade em uma tabela ou, se a entidade não existir, insere a entidade.
UpdateMode.MERGE
adicionará novas propriedades a uma entidade existente que não excluirá uma propriedade existenteUpdateMode.REPLACE
substituirá a entidade existente pela determinada, excluindo todas as propriedades existentes não incluídas na entidade enviada
Exemplos
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas mais comuns da Tabela, incluindo:
Criar uma tabela
Crie uma tabela em sua conta e obtenha uma TableClient
para executar operações na tabela recém-criada:
from azure.data.tables import TableServiceClient
table_service_client = TableServiceClient.from_connection_string(conn_str="<connection_string>")
table_name = "myTable"
table_client = table_service_client.create_table(table_name=table_name)
Como criar entidades
Criar entidades na tabela:
from azure.data.tables import TableServiceClient
from datetime import datetime
PRODUCT_ID = u'001234'
PRODUCT_NAME = u'RedMarker'
my_entity = {
u'PartitionKey': PRODUCT_NAME,
u'RowKey': PRODUCT_ID,
u'Stock': 15,
u'Price': 9.99,
u'Comments': u"great product",
u'OnSale': True,
u'ReducedPrice': 7.99,
u'PurchaseDate': datetime(1973, 10, 4),
u'BinaryRepresentation': b'product_name'
}
table_service_client = TableServiceClient.from_connection_string(conn_str="<connection_string>")
table_client = table_service_client.get_table_client(table_name="myTable")
entity = table_client.create_entity(entity=my_entity)
Consultando entidades
Consultando entidades na tabela:
from azure.data.tables import TableClient
my_filter = "PartitionKey eq 'RedMarker'"
table_client = TableClient.from_connection_string(conn_str="<connection_string>", table_name="myTable")
entities = table_client.query_entities(my_filter)
for entity in entities:
for key in entity.keys():
print("Key: {}, Value: {}".format(key, entity[key]))
Configuração opcional
Argumentos opcionais de palavra-chave podem ser passados no nível do cliente e por operação. A documentação de referência do azure-core descreve as configurações disponíveis para repetições, registro em log, protocolos de transporte e muito mais.
Configuração da Política de Repetição
Use os seguintes argumentos palavra-chave ao instanciar um cliente para configurar a política de repetição:
- retry_total (int): número total de tentativas a serem permitidas. Tem precedência sobre outras contagens.
retry_total=0
Passe se você não quiser repetir as solicitações. O valor padrão é 10. - retry_connect (int): quantos erros relacionados à conexão tentar novamente. O valor padrão é 3.
- retry_read (int): quantas vezes tentar novamente em erros de leitura. O valor padrão é 3.
- retry_status (int): quantas vezes tentar novamente em códigos de status inválidos. O valor padrão é 3.
- retry_to_secondary (bool): se a solicitação deve ser repetida para a secundária, se possível.
Isso só deve ser habilitado de contas RA-GRS usadas e dados potencialmente obsoletos podem ser tratados.
Assume o padrão de
False
.
Outra configuração de cliente/por operação
Outras configurações opcionais palavra-chave argumentos que podem ser especificados no cliente ou por operação.
Argumentos de palavra-chave do cliente:
- connection_timeout (int): opcionalmente, define o valor de tempo limite de conexão e leitura, em segundos.
- transport (Any): transporte fornecido pelo usuário para enviar a solicitação HTTP.
Argumentos de palavra-chave por operação:
- raw_response_hook (callable): o retorno de chamada especificado usa a resposta retornada do serviço.
- raw_request_hook (callable): o retorno de chamada determinado usa a solicitação antes de ser enviado ao serviço.
- client_request_id (str): identificação da solicitação especificada pelo usuário opcional.
- user_agent (str): acrescenta o valor personalizado ao cabeçalho user-agent a ser enviado com a solicitação.
- logging_enable (bool): habilita o registro em log no nível de DEBUG. Usa False como padrão. Também pode ser passado no nível do cliente para habilitá-lo para todas as solicitações.
- cabeçalhos (dict): passe cabeçalhos personalizados como pares chave e valor. Por exemplo,
headers={'CustomValue': value}
Solução de problemas
Geral
Os clientes de Tabelas do Azure geram exceções definidas no Azure Core.
Quando você interage com a biblioteca de tabelas do Azure usando o SDK do Python, os erros retornados pelo serviço respondem aos mesmos códigos de status HTTP para solicitações da API REST. As operações de serviço Tabela lançarão um em caso de HttpResponseError
falha com códigos de erro úteis.
Por exemplo, se você tentar criar uma tabela que já existe, um 409
erro será retornado indicando "Conflito".
from azure.data.tables import TableServiceClient
from azure.core.exceptions import HttpResponseError
table_name = 'YourTableName'
service_client = TableServiceClient.from_connection_string(connection_string)
# Create the table if it does not already exist
tc = service_client.create_table_if_not_exists(table_name)
try:
service_client.create_table(table_name)
except HttpResponseError:
print("Table with name {} already exists".format(table_name))
Registro em log
Essa biblioteca usa a biblioteca de log padrão para registro em log. As informações básicas sobre sessões HTTP (URLs, cabeçalhos etc.) são registradas no nível info.
O log detalhado no nível de DEBUG, incluindo corpos de solicitação/resposta e cabeçalhos não redigidos, pode ser habilitado em um cliente com o logging_enable
argumento :
import sys
import logging
from azure.data.tables import TableServiceClient
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
# This client will log detailed information about its HTTP sessions, at DEBUG level
service_client = TableServiceClient.from_connection_string("your_connection_string", logging_enable=True)
Da mesma forma, logging_enable
pode habilitar o log detalhado para uma única operação, mesmo quando não estiver habilitada para o cliente:
service_client.create_entity(entity=my_entity, logging_enable=True)
Próximas etapas
Introdução aos nossos exemplos de Tabela.
Vários exemplos do SDK do Python de Tabelas do Azure estão disponíveis para você no repositório GitHub do SDK. Esses exemplos fornecem código de exemplo para cenários adicionais comumente encontrados ao trabalhar com Tabelas.
Cenários comuns
Esses exemplos de código mostram operações de cenário comuns com a biblioteca de clientes das Tabelas do Azure. As versões assíncronas dos exemplos (os arquivos de exemplo do Python acrescentados com _async) mostram operações assíncronas.
- Criar e excluir tabelas: sample_create_delete_table.py (versão assíncrona)
- Listar e consultar tabelas: sample_query_tables.py (versão assíncrona)
- Inserir e excluir entidades: sample_insert_delete_entities.py (versão assíncrona)
- Consultar e listar entidades: sample_query_table.py (versão assíncrona)
- Atualizar, upsert e mesclar entidades: sample_update_upsert_merge_entities.py (versão assíncrona)
- Confirmando muitas solicitações em uma única transação: sample_batching.py (versão assíncrona)
Documentação adicional
Para obter uma documentação mais abrangente sobre tabelas do Azure, consulte a documentação das Tabelas do Azure sobre docs.microsoft.com.
Problemas conhecidos
Uma lista de problemas conhecidos no momento relacionados aos pontos de extremidade de tabela do Cosmos DB pode ser encontrada aqui.
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.
Azure SDK for Python