Bibliothèque cliente Azure Schema Registry pour Python - version 1.2.0
Azure Schema Registry est un service de référentiel de schémas hébergé par Azure Event Hubs, qui fournit le stockage des schémas, le contrôle de version et la gestion. Le registre est utilisé par les sérialiseurs pour réduire la taille de la charge utile tout en décrivant la structure de charge utile avec des identificateurs de schéma plutôt que des schémas complets.
| Code sourcePackage (PyPi) | Documentation de référence sur les | API Échantillons | Changelog
Clause d’exclusion de responsabilité
La prise en charge des packages Python du SDK Azure pour Python 2.7 a pris fin le 1er janvier 2022. Pour obtenir plus d’informations et poser des questions, reportez-vous à https://github.com/Azure/azure-sdk-for-python/issues/20691
Prise en main
Installer le package
Installez la bibliothèque cliente Azure Schema Registry pour Python avec pip :
pip install azure-schemaregistry
Configuration requise :
Pour utiliser ce package, vous devez disposer des conditions suivantes :
- Abonnement Azure - Créer un compte gratuit
- Registre - de schémas AzureVoici le guide de démarrage rapide pour créer un groupe Registre de schémas à l’aide du Portail Azure.
- Python 3.7 ou version ultérieure - Installer Python
Authentifier le client
L’interaction avec Schema Registry commence par une instance de la classe SchemaRegistryClient. Le constructeur client prend l’espace de noms complet et les informations d’identification Azure Active Directory :
L’espace de noms complet de l’instance de Registre de schémas doit suivre le format :
<yournamespace>.servicebus.windows.net
.Les informations d’identification AAD qui implémentent le protocole TokenCredential doivent être passées au constructeur. Des implémentations du
TokenCredential
protocole sont disponibles dans le package azure-identity. Pour utiliser les types d’informations d’identification fournis parazure-identity
, installez la bibliothèque de client Azure Identity pour Python avec pip :
pip install azure-identity
- En outre, pour utiliser l’API asynchrone, vous devez d’abord installer un transport asynchrone, tel que aiohttp :
pip install aiohttp
Créez un client à l’aide de la bibliothèque 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)
Concepts clés
Schéma : le schéma est l’organisation ou la structure des données. Vous trouverez des informations plus détaillées ici.
Groupe de schémas : groupe logique de schémas similaires basés sur des critères métier, qui peut contenir plusieurs versions d’un schéma. Vous trouverez des informations plus détaillées ici.
SchemaRegistryClient :
SchemaRegistryClient
fournit l’API pour stocker et récupérer des schémas dans le registre de schémas.
Exemples
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches les plus courantes du Registre de schémas, notamment :
Inscrire un schéma
Utilisez SchemaRegistryClient.register_schema
la méthode pour inscrire un schéma.
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
Obtenir le schéma par ID
Obtenez la définition de schéma et ses propriétés par ID de schéma.
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
Obtenir le schéma par version
Obtenez la définition de schéma et ses propriétés par version de schéma.
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
Obtenir l’ID d’un schéma
Obtenez l’ID de schéma d’un schéma par définition de schéma et ses propriétés.
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
Dépannage
Général
Les clients du registre de schémas posent des exceptions définies dans Azure Core.
Journalisation
Cette bibliothèque utilise la bibliothèque de journalisation standard pour la journalisation. Les informations de base sur les sessions HTTP (URL, en-têtes, etc.) sont enregistrées au niveau INFO.
La journalisation détaillée au niveau DEBUG, y compris les corps de requête/réponse et les en-têtes non expurgés, peut être activée sur un client avec l’argument 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)
De la même façon, logging_enable
peut activer la journalisation détaillée pour une seule opération, même quand elle n’est pas activée pour le client :
schema_registry_client.get_schema(schema_id, logging_enable=True)
Étapes suivantes
Autres exemples de code
Consultez le répertoire d’exemples pour obtenir des exemples détaillés d’utilisation de cette bibliothèque pour inscrire et récupérer un schéma dans/à partir du registre de schémas.
Contribution
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.
Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.
Azure SDK for Python