Condividi tramite


Usare i tag di indice BLOB per gestire e trovare dati con Python

Questo articolo illustra come usare i tag di indice BLOB per gestire e trovare i dati usando la libreria client Archiviazione di Azure per Python.

Per informazioni sull'impostazione dei tag di indice BLOB tramite LE API asincrone, vedere Impostare i tag di indice BLOB in modo asincrono.

Prerequisiti

  • Questo articolo presuppone che sia già stato configurato un progetto per lavorare con la libreria client Archiviazione BLOB di Azure per Python. Per informazioni sulla configurazione del progetto, tra cui l'installazione del pacchetto, l'aggiunta import di istruzioni e la creazione di un oggetto client autorizzato, vedere Introduzione a Archiviazione BLOB di Azure e Python.
  • Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per usare i tag di indice BLOB. Per altre informazioni, vedere le linee guida per l'autorizzazione per le operazioni API REST seguenti:

Informazioni sui tag di indice BLOB

I tag di indice BLOB classificano i dati nell'account di archiviazione usando gli attributi dei tag chiave-valore. Questi tag vengono indicizzati e esposti automaticamente come indice multidimensionale ricercabile per trovare facilmente i dati. Questo articolo illustra come impostare, ottenere e trovare i dati usando i tag indice BLOB.

I tag di indice BLOB non sono supportati per gli account di archiviazione con spazio dei nomi gerarchico abilitato. Per altre informazioni sulla funzionalità di tag dell'indice BLOB insieme a problemi noti e limitazioni, vedere Gestire e trovare i dati BLOB di Azure con tag di indice BLOB.

Impostare i tag

È possibile impostare i tag di indice se il codice ha autorizzato l'accesso ai dati BLOB tramite uno dei meccanismi seguenti:

Per altre informazioni, vedere Impostazione dei tag di indice BLOB.

È possibile impostare i tag usando il metodo seguente:

I tag specificati in questo metodo sostituiranno i tag esistenti. Se i valori precedenti devono essere mantenuti, devono essere scaricati e inclusi nella chiamata a questo metodo. L'esempio seguente illustra come impostare i tag:

def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")

    # Get any existing tags for the blob if they need to be preserved
    tags = blob_client.get_blob_tags()

    # Add or modify tags
    updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'}
    tags.update(updated_tags)

    blob_client.set_blob_tags(tags)

È possibile eliminare tutti i tag passando un oggetto vuoto dict nel set_blob_tags metodo :

def clear_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")

    # Pass in empty dict object to clear tags
    tags = dict()
    blob_client.set_blob_tags(tags)

Ottenere tag

È possibile ottenere tag di indice se il codice ha autorizzato l'accesso ai dati BLOB tramite uno dei meccanismi seguenti:

Per altre informazioni, vedere Ottenere ed elencare i tag di indice BLOB.

È possibile ottenere tag usando il metodo seguente:

L'esempio seguente illustra come recuperare e scorrere i tag del BLOB:

def get_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")

    tags = blob_client.get_blob_tags()
    print("Blob tags: ")
    for k, v in tags.items():
        print(k, v)

Filtrare e trovare dati con tag di indice BLOB

È possibile usare i tag di indice per trovare e filtrare i dati se il codice ha autorizzato l'accesso ai dati BLOB tramite uno dei meccanismi seguenti:

Per altre informazioni, vedere Ricerca di dati tramite tag di indice BLOB.

Nota

Non è possibile usare i tag di indice per recuperare le versioni precedenti. I tag per le versioni precedenti non vengono passati al motore di indicizzazione BLOB. Per altre informazioni, vedere Condizioni e problemi noti.

È possibile trovare i dati usando il metodo seguente:

L'esempio seguente trova ed elenca tutti i BLOB contrassegnati come immagine:

def find_blobs_by_tags(self, blob_service_client: BlobServiceClient, container_name):
    container_client = blob_service_client.get_container_client(container=container_name)

    query = "\"Content\"='image'"
    blob_list = container_client.find_blobs_by_tags(filter_expression=query)
    
    print("Blobs tagged as images")
    for blob in blob_list:
        print(blob.name)

Impostare i tag di indice BLOB in modo asincrono

La libreria client Archiviazione BLOB di Azure per Python supporta l'uso asincrono dei tag di indice BLOB. Per altre informazioni sui requisiti di configurazione del progetto, vedere Programmazione asincrona.

Seguire questa procedura per impostare i tag di indice BLOB usando le API asincrone:

  1. Aggiungere le seguenti istruzioni Import:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. Aggiungere il codice per eseguire il programma usando asyncio.run. Questa funzione esegue la coroutine passata, main() nell'esempio, e gestisce il asyncio ciclo di eventi. Le coroutine vengono dichiarate con la sintassi async/await. In questo esempio la main() coroutine crea innanzitutto il primo livello BlobServiceClient usando async with, quindi chiama il metodo che imposta i tag di indice BLOB. Si noti che solo il client di primo livello deve usare async with, come altri client creati da esso condividono lo stesso pool di connessioni.

    async def main():
        sample = BlobSamples()
    
        # TODO: Replace <storage-account-name> with your actual storage account name
        account_url = "https://<storage-account-name>.blob.core.windows.net"
        credential = DefaultAzureCredential()
    
        async with BlobServiceClient(account_url, credential=credential) as blob_service_client:
            await sample.set_blob_tags(blob_service_client, "sample-container")
    
    if __name__ == '__main__':
        asyncio.run(main())
    
  3. Aggiungere il codice per impostare i tag di indice BLOB. Il codice è uguale all'esempio sincrono, ad eccezione del fatto che il metodo viene dichiarato con la async parola chiave e la await parola chiave viene usata quando si chiamano i get_blob_tags metodi e set_blob_tags .

    async def set_blob_tags(self, blob_service_client: BlobServiceClient, container_name):
        blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
    
        # Get any existing tags for the blob if they need to be preserved
        tags = await blob_client.get_blob_tags()
    
        # Add or modify tags
        updated_tags = {'Sealed': 'false', 'Content': 'image', 'Date': '2022-01-01'}
        tags.update(updated_tags)
    
        await blob_client.set_blob_tags(tags)
    

Con questa configurazione di base, è possibile implementare altri esempi in questo articolo come coroutine usando la sintassi async/await.

Risorse

Per altre informazioni su come usare i tag di indice per gestire e trovare dati usando la libreria client Archiviazione BLOB di Azure per Python, vedere le risorse seguenti.

Operazioni dell'API REST

Azure SDK per Python contiene librerie basate sull'API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi Python noti. I metodi della libreria client per la gestione e l'uso dei tag di indice BLOB usano le operazioni API REST seguenti:

Esempi di codice

Risorse della libreria client

Vedi anche