Klientská knihovna registru schémat Azure pro Python – verze 1.2.0
Azure Schema Registry je služba úložiště schémat hostovaná službou Azure Event Hubs, která poskytuje úložiště schémat, správu verzí a správu. Registr využívá serializátory ke snížení velikosti datové části při popisu struktury datové části s identifikátory schématu spíše než úplná schémata.
Zdrojový kód | Balíček (PyPi) | Referenční dokumentace k | rozhraní API Vzorky | Changelog
Právní omezení
Podpora balíčků Azure SDK Python pro Python 2.7 skončila 1. ledna 2022. Další informace a dotazy najdete na https://github.com/Azure/azure-sdk-for-python/issues/20691
Začínáme
Instalace balíčku
Nainstalujte klientskou knihovnu Azure Schema Registry pro Python pomocí pip:
pip install azure-schemaregistry
Požadavky:
Pokud chcete tento balíček použít, musíte mít:
- Předplatné Azure – Vytvoření bezplatného účtu
- Azure Schema Registry - Tady je příručka rychlý start k vytvoření skupiny registru schémat pomocí Azure Portal.
- Python 3.7 nebo novější – Instalace Pythonu
Ověření klienta
Interakce s registrem schématu začíná instancí třídy SchemaRegistryClient. Konstruktor klienta přebírá plně kvalifikovaný obor názvů a přihlašovací údaje Azure Active Directory:
Plně kvalifikovaný obor názvů instance registru schématu by měl mít formát :
<yournamespace>.servicebus.windows.net
.Přihlašovací údaje AAD, které implementují protokol TokenCredential , by měly být předány konstruktoru. V balíčku azure-identity jsou k dispozici implementace
TokenCredential
protokolu. Pokud chcete používat typy přihlašovacích údajů, kteréazure-identity
poskytuje , nainstalujte klientskou knihovnu Azure Identity pro Python pomocí příkazu pip:
pip install azure-identity
- Pokud chcete navíc používat asynchronní rozhraní API, musíte nejprve nainstalovat asynchronní přenos, například aiohttp:
pip install aiohttp
Vytvořte klienta pomocí knihovny azure-identity:
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)
Klíčové koncepty
Schéma: Schéma je organizace nebo struktura dat. Podrobnější informace najdete tady.
Skupina schémat: Logická skupina podobných schémat založená na obchodních kritériích, která může obsahovat více verzí schématu. Podrobnější informace najdete tady.
SchemaRegistryClient:
SchemaRegistryClient
poskytuje rozhraní API pro ukládání a načítání schémat v registru schémat.
Příklady
Následující části obsahují několik fragmentů kódu, které pokrývají některé nejběžnější úlohy registru schémat, mezi které patří:
Registrace schématu
K registraci schématu použijte SchemaRegistryClient.register_schema
metodu .
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
Získání schématu podle ID
Získejte definici schématu a jeho vlastnosti podle ID schématu.
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
Získání schématu podle verze
Získejte definici schématu a jeho vlastnosti podle verze schématu.
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
Získání ID schématu
Získejte ID schématu schématu podle definice schématu a jeho vlastností.
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
Poradce při potížích
Obecné
Klienti registru schémat vyvolávají výjimky definované v Azure Core.
protokolování
Tato knihovna používá k protokolování standardní knihovnu protokolování . Základní informace o relacích HTTP (adresy URL, hlavičky atd.) se protokolují na úrovni INFO.
Podrobné protokolování úrovně LADĚNÍ, včetně těl požadavků/odpovědí a nezopravovaných hlaviček, je možné povolit na klientovi s argumentem logging_enable
:
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)
Podobně logging_enable
může povolit podrobné protokolování pro jednu operaci, i když není povolené pro klienta:
schema_registry_client.get_schema(schema_id, logging_enable=True)
Další kroky
Další vzorový kód
Podrobné příklady použití této knihovny k registraci a načtení schématu do/z registru schémat najdete v adresáři samples .
Přispívání
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete tady: https://cla.microsoft.com
Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo kontaktujte s opencode@microsoft.com případnými dalšími dotazy nebo připomínkami.
Azure SDK for Python