Skip to main content

Database Services

The DatabaseServices class provides CRUD operations for database service connections (e.g. Postgres, BigQuery, Snowflake). FQN format: service_name

Import

from metadata.sdk import configure, DatabaseServices
from metadata.generated.schema.api.services.createDatabaseService import CreateDatabaseServiceRequest
from metadata.generated.schema.entity.services.databaseService import DatabaseServiceType
from metadata.generated.schema.entity.services.connections.database.postgresConnection import PostgresConnection

configure(host="https://your-instance.getcollate.io/api", jwt_token="your-token")

Create

from metadata.generated.schema.entity.services.connections.database.common.basicAuth import BasicAuth

service = DatabaseServices.create(
    CreateDatabaseServiceRequest(
        name="my_postgres",
        serviceType=DatabaseServiceType.Postgres,
        connection={
            "config": PostgresConnection(
                hostPort="localhost:5432",
                username="admin",
                authType=BasicAuth(password="password"),
                database="analytics",
            )
        },
        description="Production Postgres cluster",
    )
)
print(service.fullyQualifiedName)  # "my_postgres"

Retrieve

# By ID
service = DatabaseServices.retrieve("service-uuid")

# By name (the FQN is just the service name)
service = DatabaseServices.retrieve_by_name("my_postgres")

# With fields
service = DatabaseServices.retrieve_by_name("my_postgres", fields=["owners", "tags"])

List

# Single page
page = DatabaseServices.list(limit=50)

# All services
all_services = DatabaseServices.list_all()
for svc in all_services:
    print(f"{svc.name} ({svc.serviceType})")

Update

service = DatabaseServices.retrieve_by_name("my_postgres")
service.description = "Production Postgres — updated"
DatabaseServices.update(service)

Delete

# Soft delete
DatabaseServices.delete("service-uuid")

# Hard delete — removes the service and all child entities
DatabaseServices.delete("service-uuid", recursive=True, hard_delete=True)

Version History

versions = DatabaseServices.get_versions("service-uuid")
v = DatabaseServices.get_specific_version("service-uuid", "0.2")