Azure Schema Registry ügyfélkódtár Pythonhoz – 1.2.0-s verzió
Az Azure Schema Registry egy Azure Event Hubs által üzemeltetett sémaadattár-szolgáltatás, amely sématárolást, verziószámozást és felügyeletet biztosít. A beállításjegyzéket szerializálók használják a hasznos adatok méretének csökkentésére, miközben a hasznos adatok struktúráját sémaazonosítókkal írják le a teljes sémák helyett.
Forráskód | Csomag (PyPi) | API-referenciadokumentáció | Minták | Változatlan
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 lásd: https://github.com/Azure/azure-sdk-for-python/issues/20691
Első lépések
A csomag telepítése
Telepítse a Pythonhoz készült Azure Schema Registry ügyfélkódtárat a pip használatával:
pip install azure-schemaregistry
Előfeltételek:
A csomag használatához a következőket kell tennie:
- Azure-előfizetés – Ingyenes fiók létrehozása
- Azure Schema Registry - Az alábbi rövid útmutató segítségével létrehozhat egy sémaregisztrációs adatbáziscsoportot a Azure Portal használatával.
- Python 3.7 vagy újabb – A Python telepítése
Az ügyfél hitelesítése
A sémaregisztrációs adatbázissal való interakció a SchemaRegistryClient osztály egy példányával kezdődik. Az ügyfélkonstruktor a teljes névteret és egy Azure Active Directory-hitelesítő adatot használja:
A sémaregisztrációs példány teljes névterének a következő formátumot kell követnie:
<yournamespace>.servicebus.windows.net
.A TokenCredential protokollt megvalósító AAD-hitelesítő adatokat át kell adni a konstruktornak. Az azure-identity csomagban elérhető protokoll implementációi
TokenCredential
is elérhetők. A által biztosítottazure-identity
hitelesítőadat-típusok használatához telepítse a Pythonhoz készült Azure Identity ügyfélkódtárat a pip használatával:
pip install azure-identity
- Emellett az async API használatához először telepítenie kell egy aszinkron átvitelt, például az aiohttp:
pip install aiohttp
Ügyfél létrehozása az azure-identity kódtár használatával:
from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Namespace should be similar to: '<your-eventhub-namespace>.servicebus.windows.net/'
fully_qualified_namespace = '<< FULLY QUALIFIED NAMESPACE OF THE SCHEMA REGISTRY >>'
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace, credential)
Fő fogalmak
Séma: A séma az adatok szervezete vagy struktúrája. Részletesebb információk itt találhatók.
Sémacsoport: Hasonló sémák üzleti feltételeken alapuló logikai csoportja, amely egy séma több verzióját is tartalmazhatja. Részletesebb információk itt találhatók.
SchemaRegistryClient:
SchemaRegistryClient
az API-t biztosítja a sémák sémaregisztrációs adatbázisban való tárolásához és lekéréséhez.
Példák
A következő szakaszok számos kódrészletet biztosítanak, amelyek a sémaregisztrációs adatbázis leggyakoribb feladatait tartalmazzák, például:
- Séma regisztrálása
- A séma lekérése azonosító alapján
- A séma lekérése verzió szerint
- Séma azonosítójának lekérése
Séma regisztrálása
Séma regisztrálása metódussal SchemaRegistryClient.register_schema
.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
"""
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
id = schema_properties.id
A séma lekérése azonosító alapján
Kérje le a sémadefiníciót és annak tulajdonságait sémaazonosító alapján.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
schema_id = 'your-schema-id'
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema = schema_registry_client.get_schema(schema_id)
definition = schema.definition
properties = schema.properties
A séma lekérése verzió szerint
Kérje le a sémadefiníciót és annak tulajdonságait sémaverzió szerint.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ["SCHEMAREGISTRY_GROUP"]
name = "your-schema-name"
version = int("<your schema version>")
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema = schema_registry_client.get_schema(group_name=group_name, name=name, version=version)
definition = schema.definition
properties = schema.properties
Séma azonosítójának lekérése
Kérje le egy séma sémaazonosítóját sémadefiníció és tulajdonságai alapján.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
"""
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
id = schema_properties.id
Hibaelhárítás
Általános kérdések
A sémaregisztrációs ügyfelek kivételeket emelnek ki az Azure Core-ban.
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ók az INFO szintjén naplózva lesznek.
Részletes HIBAKERESÉSi szintű naplózás, beleértve a kérelem-/választörzseket és a nem felügyelt fejléceket, engedélyezhető egy ügyfélen az logging_enable
argumentummal:
import sys
import logging
from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential
# Create a logger for the SDK
logger = logging.getLogger('azure.schemaregistry')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
credential = DefaultAzureCredential()
# This client will log detailed information about its HTTP sessions, at DEBUG level
schema_registry_client = SchemaRegistryClient("your_fully_qualified_namespace", credential, 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:
schema_registry_client.get_schema(schema_id, logging_enable=True)
Következő lépések
További mintakód
Tekintse meg a mintakönyvtárat , amely részletesen bemutatja, hogyan regisztrálhatja és lekérheti a sémát a sémaregisztrációs adatbázisba vagy onnan.
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