Azure Tables ügyfélkódtár Pythonhoz – 12.4.4-es verzió
Az Azure Tables egy NoSQL-adattárolási szolgáltatás, amely a világ bármely pontjáról elérhető http- vagy HTTPS-alapú hitelesített hívásokon keresztül.
A táblák szükség szerint méretezhetők a beszúrt adatok mennyiségének támogatásához, és lehetővé teszik az adatok tárolását nem összetett hozzáféréssel.
Az Azure Tables-ügyfél használható az Azure Storage- vagy Cosmos-fiókok eléréséhez. Ez a dokumentum a következőt ismerteti azure-data-tables
: .
Felhívjuk figyelmét, hogy ez a csomag egy csere azure-cosmosdb-tables
, amelynek már elavult. További részletekért tekintse meg a migrálási útmutatót .
Forráskód | Csomag (PyPI) | Csomag (Conda) | API-referenciadokumentáció | Minták
Felelősséget kizáró nyilatkozat
Az Azure SDK Python-csomagok támogatása a Python 2.7-hez 2022. január 01-én véget ért. További információkért és kérdésekért tekintse meg a https://github.com/Azure/azure-sdk-for-python/issues/20691Csomag használatához szükséges Python 3.7-et vagy újabb verziót. További részletekért tekintse meg a Pythonhoz készült Azure SDK verziótámogatási szabályzatát.
Első lépések
Az Azure Tables SDK hozzáférhet egy Azure Storage- vagy CosmosDB-fiókhoz.
Előfeltételek
- A csomag használatához Python 3.7 vagy újabb verzió szükséges.
- Rendelkeznie kell egy Azure-előfizetéssel, és vagy
Fiók létrehozása
- Új tárfiók létrehozásához használhatja az Azure Portalt, a Azure PowerShell vagy az Azure CLI-t:
- Új Cosmos Storage-fiók létrehozásához használhatja az Azure CLI-t vagy az Azure Portalt.
A csomag telepítése
Telepítse a Pythonhoz készült Azure Tables ügyfélkódtárat a pip használatával:
pip install azure-data-tables
Az ügyfél létrehozása
Az Azure Tables-kódtár két típusú erőforrás használatát teszi lehetővé:
- a fiók táblái
- a táblákon belüli entitások.
Ezekkel az erőforrásokkal való interakció az ügyfél egy példányával kezdődik. Ügyfélobjektum létrehozásához szüksége lesz a fiók táblaszolgáltatás-végpontjának URL-címére és egy hitelesítő adatra, amely lehetővé teszi a fiók elérését. Ez
endpoint
a tárfiók oldalán található az Azure Portal "Hozzáférési kulcsok" szakaszában, vagy az alábbi Azure CLI-parancs futtatásával:
# Get the table service URL for the account
az storage account show -n mystorageaccount -g MyResourceGroup --query "primaryEndpoints.table"
Ha már rendelkezik a fiók URL-címével, az a szolgáltatásügyfél létrehozásához használható:
from azure.data.tables import TableServiceClient
service = TableServiceClient(endpoint="https://<my_account_name>.table.core.windows.net/", credential=credential)
A Table Service URL-címeiről és az egyéni tartománynevek Azure Storage-hoz való konfigurálásáról a hivatalos dokumentációban talál további információt.
Hitelesítő adatok típusai
A credential
paraméter többféle formában is megadható a használni kívánt engedély típusától függően. A Táblák kódtár a következő engedélyeket támogatja:
- Megosztott kulcsos
- Kapcsolati sztring
- Közös hozzáférésű jogosultságkód jogkivonata
Az ügyfél létrehozása megosztott kulcsból
Ha megosztott fiókkulcsot (más néven fiókkulcsot vagy hozzáférési kulcsot) szeretne használni, sztringként adja meg a kulcsot. Ez a tárfiókban található az Azure Portal "Hozzáférési kulcsok" szakaszában, vagy az alábbi Azure CLI-parancs futtatásával:
az storage account keys list -g MyResourceGroup -n MyStorageAccount
Használja a kulcsot hitelesítőadat-paraméterként az ügyfél hitelesítéséhez:
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)
Ügyfél létrehozása kapcsolati sztring
A használati esettől és az engedélyezési módszertől függően érdemes lehet inicializálni egy ügyfélpéldányt egy kapcsolati sztring a fiók URL-címének és hitelesítő adatainak külön megadása helyett. Ehhez adja át a kapcsolati sztring az ügyfél osztálymetódusánakfrom_connection_string
. A kapcsolati sztring a tárfiókban található az Azure Portal "Hozzáférési kulcsok" szakaszában, vagy a következő Azure CLI-paranccsal:
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)
Az ügyfél létrehozása SAS-jogkivonatból
Ha közös hozzáférésű jogosultságkód (SAS) jogkivonatot szeretne használni, sztringként adja meg a jogkivonatot. Ha a fiók URL-címe tartalmazza az SAS-jogkivonatot, hagyja ki a hitelesítőadat-paramétert. Sas-jogkivonatot létrehozhat az Azure Portalon a Közös hozzáférésű jogosultságkód területen, vagy az generate_*_sas()
egyik függvény használatával sas-jogkivonatot hozhat létre a fiókhoz vagy a táblához:
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))
Fő fogalmak
A Table szolgáltatás gyakori felhasználási területei:
- Több TB-nyi, webes méretű alkalmazások kiszolgálására alkalmas strukturált adat tárolása
- Olyan adathalmazok tárolása, amelyekhez nincs szükség összetett illesztésekre, idegen kulcsokra vagy tárolt eljárásokra, és amelyek a gyors hozzáférés érdekében normalizálhatók
- Adatok gyors lekérdezése fürtözött indexszel
- Adatok elérése az OData protokoll és a LINQ szűrőkifejezések használatával
Az Azure Tables Service-t a következő összetevők alkotják:
- A fiók
- A fiókon belüli tábla, amely entitások készletét tartalmazza
- Egy táblán belüli entitás szótárként
A Pythonhoz készült Azure Tables ügyfélkódtár lehetővé teszi ezen összetevők használatát egy dedikált ügyfélobjektum használatával.
Ügyfelek
A Table Service különböző összetevőinek használatához két különböző ügyfél érhető el:
TableServiceClient
-- Fiókbeállítás beolvasása és beállítása
- Táblák lekérdezése, létrehozása és törlése a fiókban.
- Lekérhet egy
TableClient
adott táblát aget_table_client
metódussal.
TableClient
-- Egy adott táblával kommunikál (amelynek még nem kell léteznie).
- Entitásokat hozhat létre, törölhet, kérdezhet le és állíthat be a megadott táblán belül.
- Hozza létre vagy törölje magát a megadott táblát.
Entitások
Az entitások hasonlóak a sorokhoz. Egy entitás rendelkezik egy PartitionKey
, egy RowKey
és egy tulajdonságkészlettel. A tulajdonság egy oszlophoz hasonló névértékpár. A tábla minden entitásának nem kell ugyanazokkal a tulajdonságokkal rendelkeznie. Az entitások például az alábbihoz hasonló szótárakként ábrázolhatók:
entity = {
'PartitionKey': 'color',
'RowKey': 'brand',
'text': 'Marker',
'color': 'Purple',
'price': '5'
}
- create_entity – Entitás hozzáadása a táblához.
- delete_entity – Entitás törlése a táblából.
- update_entity – Egy entitás adatainak frissítése a meglévő entitás egyesítésével vagy cseréjével.
UpdateMode.MERGE
új tulajdonságokat ad hozzá egy meglévő entitáshoz, amely nem törli a meglévő tulajdonságokatUpdateMode.REPLACE
lecseréli a meglévő entitást az adott entitásra, és törli az elküldött entitásban nem szereplő meglévő tulajdonságokat
- query_entities – Egy tábla meglévő entitásainak lekérdezése OData-szűrőkkel.
- get_entity – Adott entitás lekérése egy táblából partíció és sorkulcs alapján.
- upsert_entity – Egy tábla egy entitásának egyesítése vagy cseréje, vagy ha az entitás nem létezik, beszúrja az entitást.
UpdateMode.MERGE
új tulajdonságokat ad hozzá egy meglévő entitáshoz, amely nem törli a meglévő tulajdonságokatUpdateMode.REPLACE
lecseréli a meglévő entitást az adott entitásra, és törli az elküldött entitásban nem szereplő meglévő tulajdonságokat
Példák
A következő szakaszok számos kódrészletet biztosítanak, amelyek a leggyakoribb Table-feladatokat fedik le, többek között az alábbiakat:
Tábla létrehozása
Hozzon létre egy táblát a fiókjában, és szerezzen be egy TableClient
műveletet az újonnan létrehozott táblán:
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)
Entitások létrehozása
Entitások létrehozása a táblában:
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)
Entitások lekérdezése
Entitások lekérdezése a táblában:
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]))
Választható konfiguráció
Az opcionális kulcsszóargumentumok az ügyfél és a művelet szintjén is átadhatók. Az Azure-Core referenciadokumentációja többek között az újrapróbálkozásokhoz, a naplózáshoz, az átviteli protokollokhoz és egyebekhez elérhető konfigurációkat ismerteti.
Szabályzatkonfiguráció újrapróbálkozásának megkísérlése
Az újrapróbálkozási szabályzat konfigurálásához használja az alábbi kulcsszóargumentumokat az ügyfél példányosításakor:
- retry_total (int): Az engedélyezni kívánt újrapróbálkozások teljes száma. Elsőbbséget élvez a többi számlálóval szemben.
Adja meg,
retry_total=0
ha nem szeretne újrapróbálkolni a kérésekkel. Alapértelmezés szerint 10. - retry_connect (int): Hány, kapcsolattal kapcsolatos hibát kell újrapróbálkoznia. Alapértelmezés szerint 3.
- retry_read (int): Hányszor kell újrapróbálkoznia az olvasási hibákon. Alapértelmezés szerint 3.
- retry_status (int): Hányszor kell újrapróbálkoznia a hibás állapotkódokkal. Alapértelmezés szerint 3.
- retry_to_secondary (bool): Azt jelzi, hogy a kérést újra meg kell-e próbálni másodlagosra, ha lehet.
Ezt csak az RA-GRS-fiókok esetében szabad engedélyezni, és az esetlegesen elavult adatok kezelhetők.
Az alapértelmezett érték:
False
.
Egyéb ügyfél-/műveletenkénti konfiguráció
Egyéb választható konfigurációs kulcsszóargumentumok, amelyek megadhatók az ügyfélen vagy műveletenként.
Ügyfél kulcsszóargumentumai:
- connection_timeout (int): Igény szerint másodpercben beállítja a kapcsolódási és olvasási időtúllépési értéket.
- transport (Any): Felhasználó által biztosított átvitel a HTTP-kérés elküldéséhez.
Műveletenkénti kulcsszóargumentumok:
- raw_response_hook (hívható): A megadott visszahívás a szolgáltatástól kapott választ használja.
- raw_request_hook (hívható): A megadott visszahívás a kérést használja a szolgáltatásba való küldés előtt.
- client_request_id (str): Nem kötelező, hogy a felhasználó meghatározta a kérést.
- user_agent (str): Hozzáfűzi az egyéni értéket a kéréssel elküldendő felhasználói ügynök fejlécéhez.
- logging_enable (bool): Engedélyezi a naplózást a HIBAKERESÉS szintjén. Alapértelmezés szerint Hamis. Ügyfélszinten is átadható, hogy minden kéréshez engedélyezve legyen.
- headers (dict): Adja meg az egyéni fejléceket kulcsként, értékpárként. Pl.
headers={'CustomValue': value}
Hibaelhárítás
Általános kérdések
Az Azure Tables-ügyfelek kivételeket emelnek ki az Azure Core-ban.
Amikor a Python SDK-val használja az Azure-táblakódtárat, a szolgáltatás által visszaadott hibák ugyanazon a HTTP-állapotkódon keresztül válaszolnak a REST API-kérésekre . A Table Service műveletei HttpResponseError
hasznos hibakódokkal jeleznek hibát.
Ha például olyan táblát próbál létrehozni, amely már létezik, a rendszer "Ütközés" hibaüzenetet 409
ad vissza.
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))
Naplózás
Ez a kódtár a szabványos naplózási kódtárat használja a naplózáshoz. A HTTP-munkamenetekkel (URL-címekkel, fejlécekkel stb.) kapcsolatos alapvető információkat az INFO szinten naplózza a rendszer.
A hibakeresési szint részletes naplózása, beleértve a kérelem-/választörzseket és a nem felügyelt fejléceket, engedélyezhető az ügyfélen a logging_enable
következő argumentummal:
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)
Hasonlóképpen logging_enable
engedélyezheti a részletes naplózást egyetlen művelethez, még akkor is, ha nincs engedélyezve az ügyfél számára:
service_client.create_entity(entity=my_entity, logging_enable=True)
Következő lépések
Ismerkedés a táblázatmintákkal.
Számos Azure Tables Python SDK-minta érhető el az SDK GitHub-adattárában. Ezek a minták példakódot biztosítanak a táblák használata során gyakran előforduló további forgatókönyvekhez.
Gyakori forgatókönyvek
Ezek a kódminták az Azure Tables ügyfélkódtárával kapcsolatos gyakori forgatókönyvműveleteket mutatják be. A minták aszinkron verziói (a _async hozzáfűzött Python-mintafájlok) aszinkron műveleteket mutatnak.
- Táblák létrehozása és törlése: sample_create_delete_table.py (aszinkron verzió)
- Lista- és lekérdezéstáblák: sample_query_tables.py (aszinkron verzió)
- Entitások beszúrása és törlése: sample_insert_delete_entities.py (aszinkron verzió)
- Entitások lekérdezése és listázása: sample_query_table.py (aszinkron verzió)
- Entitások frissítése, frissítése és egyesítése: sample_update_upsert_merge_entities.py (aszinkron verzió)
- Számos kérés véglegesítése egyetlen tranzakcióban: sample_batching.py (aszinkron verzió)
További dokumentáció
Az Azure Tables részletesebb dokumentációját a docs.microsoft.com azure tables dokumentációjában találja.
Ismert problémák
A Cosmos DB-táblavégpontokhoz kapcsolódó, jelenleg ismert problémák listáját itt találja.
Közreműködés
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. További részletekért lásd: https://cla.microsoft.com.
A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes olyan tárházban, amely a CLA-t használja.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.
Azure SDK for Python
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: