Share via


Tárolótulajdonságok és metaadatok kezelése a Pythonnal

A blobtárolók támogatják a rendszertulajdonságokat és a felhasználó által definiált metaadatokat az általuk tárolt adatok mellett. Ez a cikk bemutatja, hogyan kezelheti a rendszertulajdonságokat és a felhasználó által definiált metaadatokat a Pythonhoz készült Azure Storage-ügyfélkódtárral.

A tulajdonságok és metaadatok aszinkron API-k használatával történő kezeléséről a tároló metaadatainak aszinkron beállítása című témakörben olvashat.

Előfeltételek

Tudnivalók a tulajdonságokról és a metaadatokról

  • Rendszertulajdonságok: A rendszertulajdonságok minden Blob Storage-erőforráson léteznek. Ezek némelyike olvasható vagy beállítható, míg mások írásvédettek. A színfalak mögött egyes rendszertulajdonságok megfelelnek bizonyos szabványos HTTP-fejléceknek. A PythonHoz készült Azure Storage-ügyfélkódtár fenntartja ezeket a tulajdonságokat.

  • Felhasználó által definiált metaadatok: A felhasználó által definiált metaadatok egy vagy több, Blob Storage-erőforráshoz megadott név-érték párból állnak. Metaadatok használatával további értékeket tárolhat az erőforrással. A metaadat-értékek csak saját célra szolgálnak, és nem befolyásolják az erőforrás viselkedését.

    A metaadat-név/érték párok érvényes HTTP-fejlécek, és be kell tartaniuk a HTTP-fejlécekre vonatkozó összes korlátozást. A metaadatok elnevezési követelményeiről további információt a Metaadatnevek című témakörben talál.

Tárolótulajdonságok lekérése

A tároló tulajdonságainak lekéréséhez használja a következő módszert:

Az alábbi példakód beolvassa egy tároló rendszertulajdonságait, és a tulajdonságértékeket egy konzolablakba írja:

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

    properties = container_client.get_container_properties()

    print(f"Public access type: {properties.public_access}")
    print(f"Lease status: {properties.lease.status}")
    print(f"Lease state: {properties.lease.state}")
    print(f"Has immutability policy: {properties.has_immutability_policy}")

Metaadatok beállítása és lekérése

A metaadatokat egy vagy több név-érték párként is megadhatja egy blob- vagy tárolóerőforráson. A metaadatok beállításához használja a következő módszert:

A tároló metaadatainak beállítása felülírja a tárolóhoz társított összes meglévő metaadatot. Egyéni név-érték pár nem módosítható.

Az alábbi példakód egy tároló metaadatait állítja be:

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

    # Retrieve existing metadata, if desired
    metadata = container_client.get_container_properties().metadata

    more_metadata = {'docType': 'text', 'docCategory': 'reference'}
    metadata.update(more_metadata)

    # Set metadata on the container
    container_client.set_container_metadata(metadata=metadata)

A metaadatok lekéréséhez hívja meg a következő metódust:

A következő példa metaadat-értékekben olvasható:

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

    # Retrieve existing metadata, if desired
    metadata = container_client.get_container_properties().metadata

    for k, v in metadata.items():
        print(k, v)

Tároló metaadatainak aszinkron beállítása

A Pythonhoz készült Azure Blob Storage ügyfélkódtár a tárolótulajdonságok és metaadatok aszinkron kezelését támogatja. A projektbeállítási követelményekről további információt az Aszinkron programozás című témakörben talál.

Kövesse az alábbi lépéseket a tároló metaadatainak aszinkron API-k használatával történő beállításához:

  1. Adja hozzá a következő importálási utasításokat:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    
  2. Kód hozzáadása a program futtatásához a következő használatával asyncio.run: . Ez a függvény a példánkban futtatja az átadott koroutint, main() és kezeli az asyncio eseményhurokot. A koroutinok az aszinkron/várakozási szintaxissal vannak deklarálva. Ebben a példában a main() coroutine először a legfelső szintet BlobServiceClientasync withhozza létre, majd meghívja a tároló metaadatait beállító metódust. Vegye figyelembe, hogy csak a legfelső szintű ügyfélnek kell használnia async with, mivel az abból létrehozott többi ügyfél ugyanazt a kapcsolatkészletet használja.

    async def main():
        sample = ContainerSamples()
    
        # 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_metadata(blob_service_client, "sample-container")
    
    if __name__ == '__main__':
        asyncio.run(main())
    
  3. Adjon hozzá kódot a tároló metaadatainak beállításához. A kód megegyezik a szinkron példával, azzal a kivétellel, hogy a metódus a kulcsszóval async van deklarálva, és a await kulcsszót a rendszer a metódusok és set_container_metadata metódusok get_container_properties meghívásakor használja.

    async def set_metadata(self, blob_service_client: BlobServiceClient, container_name):
        container_client = blob_service_client.get_container_client(container=container_name)
    
        # Retrieve existing metadata, if desired
        metadata = (await container_client.get_container_properties()).metadata
    
        more_metadata = {'docType': 'text', 'docCategory': 'reference'}
        metadata.update(more_metadata)
    
        # Set metadata on the container
        await container_client.set_container_metadata(metadata=metadata)
    

Ezzel az alapszintű beállítással a cikkben más példákat is implementálhat coroutinesként az aszinkron/várakozási szintaxis használatával.

Források

A tárolótulajdonságok és metaadatok Pythonhoz készült Azure Blob Storage-ügyfélkódtár használatával történő beállításával és lekérésével kapcsolatos további információkért tekintse meg az alábbi erőforrásokat.

REST API-műveletek

Az Azure SDK for Python olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát jól ismert Python-paradigmákon keresztül. A tulajdonságok és metaadatok beállítására és lekérésére szolgáló ügyfélkódtár-metódusok a következő REST API-műveleteket használják:

A get_container_properties metódus lekéri a tároló tulajdonságait és metaadatait a Tároló tulajdonságainak lekérése művelet és a Tároló metaadatainak lekérése művelet meghívásával .

Code samples

Ügyfélkódtár erőforrásai