Delen via


Azure Schema Registry-clientbibliotheek voor Python - versie 1.2.0

Azure Schema Registry is een service voor schemaopslagplaats die wordt gehost door Azure Event Hubs en die schema-opslag, versiebeheer en beheer biedt. Het register wordt gebruikt door serializers om de nettoladinggrootte te verminderen terwijl de nettoladingstructuur wordt beschreven met schema-id's in plaats van volledige schema's.

Broncode | Pakket (PyPi) | API-referentiedocumentatie | Monsters | Changelog

Disclaimer

Ondersteuning voor Azure SDK Python-pakketten voor Python 2.7 is beëindigd op 01 januari 2022. Voor meer informatie en vragen raadpleegt u https://github.com/Azure/azure-sdk-for-python/issues/20691

Aan de slag

Het pakket installeren

Installeer de Azure Schema Registry-clientbibliotheek voor Python met pip:

pip install azure-schemaregistry

Vereisten:

Als u dit pakket wilt gebruiken, hebt u het volgende nodig:

De client verifiëren

Interactie met schemaregister begint met een exemplaar van de klasse SchemaRegistryClient. De clientconstructor gebruikt de volledig gekwalificeerde naamruimte en een Azure Active Directory-referentie:

  • De volledig gekwalificeerde naamruimte van het schemaregisterexemplaren moet de volgende indeling hebben: <yournamespace>.servicebus.windows.net.

  • Een AAD-referentie waarmee het TokenCredential-protocol wordt geïmplementeerd, moet worden doorgegeven aan de constructor. Er zijn implementaties van het TokenCredential protocol beschikbaar in het azure-identity-pakket. Als u de referentietypen wilt gebruiken die worden geleverd door azure-identity, installeert u de Azure Identity-clientbibliotheek voor Python met pip:

pip install azure-identity
  • Als u de asynchrone API wilt gebruiken, moet u bovendien eerst een asynchroon transport installeren, zoals aiohttp:
pip install aiohttp

Maak een client met behulp van de azure-identity-bibliotheek:

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)

Belangrijkste concepten

  • Schema: Schema is de organisatie of structuur voor gegevens. Meer gedetailleerde informatie vindt u hier.

  • Schemagroep: een logische groep vergelijkbare schema's op basis van zakelijke criteria, die meerdere versies van een schema kunnen bevatten. Meer gedetailleerde informatie vindt u hier.

  • SchemaRegistryClient: SchemaRegistryClient biedt de API voor het opslaan en ophalen van schema's in het schemaregister.

Voorbeelden

De volgende secties bevatten verschillende codefragmenten voor enkele van de meest voorkomende schemaregistertaken, waaronder:

Een schema registreren

Gebruik SchemaRegistryClient.register_schema de methode om een schema te registreren.

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

Het schema ophalen op id

Haal de schemadefinitie en de bijbehorende eigenschappen op op schema-id.

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

Het schema per versie ophalen

Haal de schemadefinitie en de bijbehorende eigenschappen op per schemaversie.

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

De id van een schema ophalen

Haal de schema-id van een schema op op basis van schemadefinitie en de bijbehorende eigenschappen.

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

Problemen oplossen

Algemeen

Schemaregisterclients genereren uitzonderingen die zijn gedefinieerd in Azure Core.

Logboekregistratie

Deze bibliotheek maakt gebruik van de standaardbibliotheek voor logboekregistratie voor logboekregistratie. Basisinformatie over HTTP-sessies (URL's, headers, enzovoort) wordt geregistreerd op INFO-niveau.

Gedetailleerde logboekregistratie op foutopsporingsniveau, inclusief aanvraag-/antwoordteksten en niet-bewerkte headers, kan worden ingeschakeld op een client met het logging_enable argument:

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)

Op dezelfde manier kan logging_enable logboekregistratie voor één bewerking inschakelen, zelfs wanneer dit niet is ingeschakeld voor de client:

schema_registry_client.get_schema(schema_id, logging_enable=True)

Volgende stappen

Meer voorbeeldcode

Bekijk de map met voorbeelden voor gedetailleerde voorbeelden van het gebruik van deze bibliotheek om schema's te registreren en op te halen uit het schemaregister.

Bijdragen

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.

Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.