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
- Ez a cikk feltételezi, hogy már van egy projektje, amely a PythonHoz készült Azure Blob Storage ügyfélkódtárral működik együtt. Ha többet szeretne megtudni a projekt beállításáról, beleértve a csomagtelepítést, az utasítások hozzáadását
import
és egy engedélyezett ügyfélobjektum létrehozását, olvassa el az Azure Blob Storage és a Python használatának első lépéseit. - Az engedélyezési mechanizmusnak engedéllyel kell rendelkeznie a tároló tulajdonságainak vagy metaadatainak használatához. További információkért tekintse meg az alábbi REST API-műveletek engedélyezési útmutatóját:
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:
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
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 azasyncio
eseményhurokot. A koroutinok az aszinkron/várakozási szintaxissal vannak deklarálva. Ebben a példában amain()
coroutine először a legfelső szintetBlobServiceClient
async with
hozza 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álniaasync 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())
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 aawait
kulcsszót a rendszer a metódusok ésset_container_metadata
metódusokget_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:
- Tároló tulajdonságainak lekérése (REST API)
- Tároló metaadatainak beállítása (REST API)
- Tároló metaadatainak lekérése (REST API)
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
- Szinkron vagy aszinkron kódminták megtekintése ebből a cikkből (GitHub)