Skip to main content

A GraphQL endpoint for Datasette

Project description

datasette-graphql

PyPI Changelog License

A GraphQL endpoint for Datasette

Work in progress alpha - this has many missing features.

Try out a live demo at datasette-graphql-demo.datasette.io/graphql.

Installation

Install this plugin in the same environment as Datasette.

$ pip install datasette-graphql

Usage

This sets up /graphql as a GraphQL endpoint for the first attached database. Individual tables can be queried like this:

{
  repos {
    id
    full_name
    description
  }
}

If a column is a foreign key to another table, you can request columns of that table using a nested query like this:

{
  repos {
    id
    full_name
    owner {
      id
      login
    }
  }
}

You can filter the rows returned for a specific table using the filters: argument. This accepts a list of filters, where a filter is a string of the form column=value or column__op=value. For example, to return just repositories with the Apache 2 license and more than 10 stars:

{
  repos(filters: ["license=apache-2.0", "stargazers_count__gt=10"]) {
    full_name
    stargazers_count
    license {
      key
    }
  }
}

This is the same format used for querystring arguments to the Datasette table view, see column filter arguments in the Datasette documentation.

Still to come

See issues for a full list. Planned improvements include:

  • Pagination
  • Canned query support
  • Ability to allowlist specific tables, views and canned queries

Development

To set up this plugin locally, first checkout the code. Then create a new virtual environment:

cd datasette-graphql
python3 -mvenv venv
source venv/bin/activate

Or if you are using pipenv:

pipenv shell

Now install the dependencies and tests:

pip install -e '.[test]'

To run the tests:

pytest

Project details


Download files

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

Source Distribution

datasette-graphql-0.1a3.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

datasette_graphql-0.1a3-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file datasette-graphql-0.1a3.tar.gz.

File metadata

  • Download URL: datasette-graphql-0.1a3.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.5

File hashes

Hashes for datasette-graphql-0.1a3.tar.gz
Algorithm Hash digest
SHA256 505b9bc000caea5e954010fd777e4d377e2b8e72a33054af5360d77064009ad9
MD5 7f750f2504a17dc16250d54c01e0b0ae
BLAKE2b-256 31370f5e243e2eea6057fb1c89beb5b958024815378811929b08c0d00dfc6d41

See more details on using hashes here.

File details

Details for the file datasette_graphql-0.1a3-py3-none-any.whl.

File metadata

  • Download URL: datasette_graphql-0.1a3-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.5

File hashes

Hashes for datasette_graphql-0.1a3-py3-none-any.whl
Algorithm Hash digest
SHA256 8a990b9daba2f3877bb169c1df50a2ee69fa31f57974fe45b4b2f3da4b404ecc
MD5 e4ac2e576a605084b2708f5334bd4ef5
BLAKE2b-256 81a74823768d7d18a52c249384675d925e30476cdb9786d3385fc396c712cdf7

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