Skip to main content

A more complete Python client for the Redash API

Project description

Redash API Python Client

python package for interacting with the Redash API

view - Documentation     view - Documentation     GitHub Actions

Features

  • Complete access to all endpoints in the Redash API.
  • Pagination by default.
  • Duplicate dashboards.
  • Manage users and groups.
  • Duplicate queries with different source tables.

Implemented Services

  • Dashboards
  • Queries
  • Data Sources
  • Alerts
  • Users
  • Destinations
  • Groups
  • query_snippets
  • Widgets*

* widgets endpoint does not support GET requests, only update, delete and create.

Getting Started

an API key is required in addition to the instance's host URL.

Installation

pip install redash-python

Usage

from redash_python import Redash

rd = Redash(base_url="", api_key="")


# get all dashboards
dashboards = rd.dashboards.get_all()

# get specific dashboards by id
dash = rd.dashboards.get(1)

# get by slug or name
query = rd.queries.get_by_name("my-dashboard")

# get by tags
q = rd.queries.get_by_tags(["my-tag"])

# get without tags
dash = rd.dashboards.get_by_tags(["my-tag"], without=True)

# Duplicate query with a different table as source
ques = rd.queries
ques.duplicate_query_table(
    query=ques.get(1),
    table_map={"old_table": "new_table"},
    tags=["admin", "test"],
    publish=True,
)

# get a list of implemented API endpoints
print(rd.services)

# get a list of implemented endpoints in a service
print(rd.users)

for a full list of implemented methods in each service, print the service object.

>>> print(client.dashboards)
DashboardsService(attributes: ['endpoint'], methods: ['create', 'create_widget', 'delete', 'duplicate', 'exists', 'favorite', 'favorited', 'get', 'get_all', 'get_by_name', 'get_by_tags', 'get_id', 'get_slug', 'paginate', 'publish', 'refresh', 'share', 'unfavorite', 'unpublish', 'update'])

for more examples on usage, see examples folder on github.

Development

before starting development, install dev dependencies:

pip install redash-python[dev]

Architecture

this library implements a services based architecture splitting each API endpoint group to its own service, on top of which is the Redash class. all the services share base classes from mixins that make it easier to share common behavior and allows rapid development for any new endpoints. for instance adding query_snippets is as simple as:

from .base import BaseService
from .mixins import CommonMixin, NameMixin, PrintMixin


class QSnipsService(CommonMixin, NameMixin, PrintMixin):
    def __init__(self, base: BaseService) -> None:
        # init mixins
        CommonMixin.__init__(self, base)

        self.__base = base
        self.endpoint = "/api/query_snippets"

Directory Structure

redash_python
├── __init__.py
├── redash.py               # Services wrapper
└── services                # implemented services
    ├── base.py             # Base service class
    └── mixins.py           # Mixins for services with shared functionality

Contributing

Contributions are welcome, please open an issue or PR to propose any changes.

License

view - Documentation

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redash-python-0.3.27.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

redash_python-0.3.27-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file redash-python-0.3.27.tar.gz.

File metadata

  • Download URL: redash-python-0.3.27.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for redash-python-0.3.27.tar.gz
Algorithm Hash digest
SHA256 6ed066591403765586ce98f60b96f4c499a539715c3f1997684590cdef62799d
MD5 03914966d3b920d04718f959db69fddb
BLAKE2b-256 c8a8fa8cb96cf9bf6a852544443c1e5faccdf4c9ee4dd6097b72c37a1c3257d6

See more details on using hashes here.

File details

Details for the file redash_python-0.3.27-py3-none-any.whl.

File metadata

File hashes

Hashes for redash_python-0.3.27-py3-none-any.whl
Algorithm Hash digest
SHA256 4f131711d1291627d86838ce53f56dce2137883065e2a2a9d40159a68139d765
MD5 4a477b3c7c996c436e2c9240e3a12f22
BLAKE2b-256 3f120be4b4ac4b51437afea147bc0c84350797887bb6fea86b3d110a6d2a144b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page