Quickstart: Blobs beheren met Python v12 SDK

In deze quickstart leert u hoe u blobs beheert met behulp van Python. Blobs zijn objecten die grote hoeveelheden tekst of binaire gegevens kunnen bevatten, zoals afbeeldingen, documenten, streaming media en archiefgegevens. U kunt blob, downloaden uploaden en weergeven en u kunt containers maken en verwijderen.

Meer resources:

Vereisten

Instellen

In deze sectie wordt beschreven hoe u een project voorbereidt voor gebruik met de Azure Blob Storage-clientbibliotheek v12 voor Python.

Het project maken

Maak een Python-toepassing met de naam blob-quickstart-v12.

  1. Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor het project.

    mkdir blob-quickstart-v12
    
  2. Schakel over naar de zojuist gemaakte map blob-quickstart-v12.

    cd blob-quickstart-v12
    
  3. Maak een andere map met de naam gegevens aan in de map blob-quickstart-v12. In deze map worden de blobgegevensbestanden gemaakt en opgeslagen.

    mkdir data
    

Het pakket installeren

Terwijl u zich nog in de toepassingsmap blijft, installeert u de Azure Blob Storage-clientbibliotheek voor het Python-pakket met behulp van de pip install opdracht .

pip install azure-storage-blob

Met deze opdracht installeert u het pakket Azure Blob Storage-clientbibliotheek voor Python en alle bibliotheken waarvan het afhankelijk is. In dit geval is dat alleen de Azure-kernbibliotheek voor Python.

Het app-framework instellen

Ga als volgt te werk vanuit de projectmap:

  1. Open een nieuw tekstbestand in uw code-editor

  2. Voeg import-instructies toe

  3. Maak de structuur voor het programma, waaronder eenvoudige afhandeling van uitzonderingen

    Hier volgt de code:

    import os, uuid
    from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient, __version__
    
    try:
        print("Azure Blob Storage v" + __version__ + " - Python quickstart sample")
    
        # Quick start code goes here
    
    except Exception as ex:
        print('Exception:')
        print(ex)
    
  4. Sla het nieuwe bestand op als blob-quickstart-v12.py in de map blob-quickstart-v12.

Kopieer uw referenties van de Azure Portal

Wanneer met de voorbeeldtoepassing een aanvraag wordt ingediend bij Azure Storage, moet deze aanvraag worden geautoriseerd. Om een aanvraag te autoriseren voegt u de referenties van uw opslagaccount toe als een verbindingsreeks. Volg deze stappen om uw opslagaccountreferenties te bekijken:

  1. Meld u aan bij Azure Portal.

  2. Zoek uw opslagaccount.

  3. Selecteer in het menudeelvenster van het opslagaccount onder Beveiliging en netwerken de optie Toegangssleutels. Hier kunt u de toegangssleutels voor het account en de volledige connection string voor elke sleutel weergeven.

    Schermopname die laat zien waar de instellingen voor de toegangssleutel zich in de Azure Portal

  4. Selecteer sleutels weergeven in het deelvenster Toegangssleutels.

  5. Zoek in de sectie key1 de waarde van de verbindingsreeks. Selecteer het pictogram Kopiëren naar klembord om de connection string. In de volgende sectie voegt connection string waarde toe aan een omgevingsvariabele.

    Schermopname waarin een verbindingsreeks vanuit de Azure-portal wordt gekopieerd

De opslagverbindingsreeks configureren

Nadat u de connection string, schrijft u deze naar een nieuwe omgevingsvariabele op de lokale computer met de toepassing. Als u de omgevingsvariabele wilt instellen, opent u een consolevenster en volgt u de aanwijzingen voor uw besturingssysteem. Vervang <yourconnectionstring> door de feitelijke verbindingsreeks.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Nadat u de omgevingsvariabele in Windows hebt toegevoegd, moet u een nieuw exemplaar van het opdrachtvenster starten.

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Programma's opnieuw opstarten

Nadat u de omgevingsvariabele hebt toegevoegd, start u actieve programma's die de omgevingsvariabele moeten lezen, opnieuw. Start bijvoorbeeld uw ontwikkelomgeving of editor opnieuw op voordat u doorgaat.

Objectmodel

Azure Blob Storage is geoptimaliseerd voor het opslaan van grote hoeveelheden ongestructureerde gegevens. Ongestructureerde gegevens zijn gegevens die niet voldoen aan een bepaald gegevensmodel of bepaalde definitie, zoals tekst of binaire gegevens. Er zijn drie typen resources voor blobopslag:

  • Het opslagaccount
  • Een container in het opslagaccount
  • Een blob in de container

Het volgende diagram geeft de relatie tussen deze resources weer.

Diagram van de blobopslagarchitectuur

Gebruik de volgende Python-klassen om te communiceren met deze resources:

  • BlobServiceClient: Met de klasse BlobServiceClient kunt u Azure Storage-resources en blob-containers bewerken.
  • ContainerClient: Met de klasse ContainerClient kunt u Azure Storage-containers en de bijbehorende blobs bewerken.
  • BlobClient: Met de klasse BlobClient kunt u Azure Storage-blobs bewerken.

Codevoorbeelden

Deze voorbeeldcodefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Azure Blob Storage-clientbibliotheek voor Python:

De verbindingsreeks ophalen

Met de onderstaande code worden de opslagaccountgegevens opgehaald connection string de omgevingsvariabele die is gemaakt in de sectie Uw opslagaccount connection string configureren.

Voeg deze code toe in het try-blok:

# Retrieve the connection string for use with the application. The storage
# connection string is stored in an environment variable on the machine
# running the application called AZURE_STORAGE_CONNECTION_STRING. If the environment variable is
# created after the application is launched in a console or with Visual Studio,
# the shell or application needs to be closed and reloaded to take the
# environment variable into account.
connect_str = os.getenv('AZURE_STORAGE_CONNECTION_STRING')

Een container maken

Verzin een naam voor de nieuwe container. Met de onderstaande code wordt een UUID-waarde aan de containernaam toevoegen om ervoor te zorgen dat deze uniek is.

Belangrijk

Containernamen moeten uit kleine letters bestaan. Zie Containers, blobs en metagegevens een naam geven en hiernaar verwijderen voor meer informatie over de naamgeving van containers en blobs.

Maak een instantie van de klasse BlobServiceClient door de methode from_connection_string aan te roepen. Roep vervolgens de methode create_container aan om de container in uw opslagaccount te maken.

Voeg deze code toe aan het einde van het try-blok:

# Create the BlobServiceClient object which will be used to create a container client
blob_service_client = BlobServiceClient.from_connection_string(connect_str)

# Create a unique name for the container
container_name = str(uuid.uuid4())

# Create the container
container_client = blob_service_client.create_container(container_name)

Blobs uploaden naar een container

Het volgende codefragment:

  1. Hiermee maakt u een lokale map voor het opslaan van gegevensbestanden.
  2. Hiermee maakt u een tekstbestand aan in de lokale map.
  3. Hiermee wordt een verwijzing naar een BlobClient-object opgehaald door de methode get_blob_client te gebruiken op de BlobServiceClient van het gedeelte Een container maken.
  4. Hiermee wordt het lokale tekstbestand geüpload naar de blob door de methode upload_blob aan te roepen.

Voeg deze code toe aan het einde van het try-blok:

# Create a local directory to hold blob data
local_path = "./data"
os.mkdir(local_path)

# Create a file in the local data directory to upload and download
local_file_name = str(uuid.uuid4()) + ".txt"
upload_file_path = os.path.join(local_path, local_file_name)

# Write text to the file
file = open(upload_file_path, 'w')
file.write("Hello, World!")
file.close()

# Create a blob client using the local file name as the name for the blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=local_file_name)

print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

# Upload the created file
with open(upload_file_path, "rb") as data:
    blob_client.upload_blob(data)

De blobs in een container in een lijst weergeven

Geeft de blobs in de container weer door de methode list_blobs aan te roepen. In dit geval is slechts één blob aan de container toegevoegd, zodat met de weergavebewerking alleen die ene blob wordt geretourneerd.

Voeg deze code toe aan het einde van het try-blok:

print("\nListing blobs...")

# List the blobs in the container
blob_list = container_client.list_blobs()
for blob in blob_list:
    print("\t" + blob.name)

Blobs downloaden

Download de eerder gemaakte blob door de methode download_blob aan te roepen. De voorbeeldcode voegt het achtervoegsel 'DOWNLOAD' toe aan de naam van het bestand, zodat u beide bestanden in het lokale bestandssysteem kunt zien.

Voeg deze code toe aan het einde van het try-blok:

# Download the blob to a local file
# Add 'DOWNLOAD' before the .txt extension so you can see both files in the data directory
download_file_path = os.path.join(local_path, str.replace(local_file_name ,'.txt', 'DOWNLOAD.txt'))
print("\nDownloading blob to \n\t" + download_file_path)

with open(download_file_path, "wb") as download_file:
    download_file.write(blob_client.download_blob().readall())

Een container verwijderen

De volgende code ruimt de resources die door de app zijn gemaakt op door de hele container te verwijderen met behulp van de methode delete_container. U kunt ook de lokale bestanden verwijderen als u dat wilt.

De app pauzeert voor gebruikersinvoer door input() aan te roepen voordat deze de blob, container en lokale bestanden verwijdert. Controleer of de resources correct zijn gemaakt voordat ze worden verwijderd.

Voeg deze code toe aan het einde van het try-blok:

# Clean up
print("\nPress the Enter key to begin clean up")
input()

print("Deleting blob container...")
container_client.delete_container()

print("Deleting the local source and downloaded files...")
os.remove(upload_file_path)
os.remove(download_file_path)
os.rmdir(local_path)

print("Done")

De code uitvoeren

Deze app maakt een testbestand in uw lokale map en uploadt het naar Azure Blob Storage. In het voorbeeld worden vervolgens de blobs in de container vermeld en wordt het bestand met een nieuwe naam gedownload. U kunt de oude en nieuwe bestanden vergelijken.

Navigeer naar de map die het bestand blob-quickstart-v12.py bevat, en voer vervolgens de volgende python-opdracht uit om de app uit te voeren.

python blob-quickstart-v12.py

De uitvoer van de app lijkt op die in het volgende voorbeeld:

Azure Blob Storage v12 - Python quickstart sample

Uploading to Azure Storage as blob:
        quickstartcf275796-2188-4057-b6fb-038352e35038.txt

Listing blobs...
        quickstartcf275796-2188-4057-b6fb-038352e35038.txt

Downloading blob to
        ./data/quickstartcf275796-2188-4057-b6fb-038352e35038DOWNLOAD.txt

Press the Enter key to begin clean up

Deleting blob container...
Deleting the local source and downloaded files...
Done

Voordat u begint met het opschonen, controleert u de gegevensmap op de twee bestanden. U kunt ze openen en zien dat ze identiek zijn.

Nadat u de bestanden hebt gecontroleerd, drukt u op Enter om de testbestanden te verwijderen en het voorbeeld te voltooien.

Volgende stappen

In deze snelstart hebt u geleerd hoe u blobs kunt uploaden, downloaden en er een lijst van maken met behulp van Python.

Als u voorbeeld-apps voor Blob-opslag wilt zien, ga dan naar: