Python SDK
The OpenMetadata Python SDK provides a comprehensive interface for interacting with the OpenMetadata API. It offers type-safe operations for managing metadata entities and seamless integration with your Python applications.Installation
Install the OpenMetadata Python SDK using pip:Quick Start
Basic Connection
OPENMETADATA_HOST and OPENMETADATA_JWT_TOKEN):
Working with Entities
Core Functionality
Entity Management
The Python SDK provides full CRUD operations for all OpenMetadata entities:Create or Update Entities
Retrieve Entities
List All Entities
List with Filters
Update Entities
Delete Entities
Entity References
Advanced Features
Error Handling
Common Use Cases
Data Discovery
Metadata Automation
Lineage Management
API Reference
The Python SDK provides a comprehensive API based on the OpenMetadata data model:Core Classes
- Entity classes (
Tables,Databases,DatabaseSchemas,DatabaseServices,Users, etc.): Static-method interfaces for each entity type — no instantiation required configure(): One-time global setup for host and JWT tokento_entity_reference(entity): Convert a retrieved entity to anEntityReferencefor use in relationships- Entity Request Classes: Pydantic-based typed request objects (e.g.,
CreateTableRequest)
Key Methods
Each entity class exposes the same consistent interface:EntityClass.create(request): Create a new entityEntityClass.retrieve(entity_id): Retrieve entity by UUIDEntityClass.retrieve_by_name(fqn, fields=[]): Retrieve entity by fully qualified nameEntityClass.list(params=None): List entities (returns a pageable result)EntityClass.list().auto_paging_iterable(): Auto-paginating generator for all entitiesEntityClass.update(entity_id, entity): Update an existing entityEntityClass.delete(entity_id, recursive=False, hard_delete=False): Delete an entity
Type Safety
The Python SDK is built on generated Pydantic models, providing:- Type hints for better IDE support
- Runtime validation of data structures
- Auto-completion for entity properties
- Error prevention through static typing
Best Practices
- Configure once: Call
configure()once at application startup and reuse globally — no need to pass a client object around - Error Handling: Always handle
APIErrorexceptions for robust integrations - Pagination: Use
.auto_paging_iterable()for large datasets to avoid loading everything into memory at once - Performance: Specify only required fields when fetching entities (e.g.,
fields=["owners", "tags"])