Skip to main content

Dash Query Builder

Component for Dash based on react-awesome-query-builder. The component is a way to graphically generate WHERE clauses for SQL queries.

Install

pip install dash_query_builder

Usage

To use Dash Query Builder (DQB), you need to have a Dash app and a dictionary of fields. The fields property is a dictionary of fields and their properties, following the config.fields docs. The only caveat is that JavaScript cannot be used as in the example.

For instance the following dictionary is valid:

fields = {
    "qty": {
        "label": "Qty",
        "type": "number",
        "fieldSettings": {"min": 0},
        "valueSources": ["value"],
        "preferWidgets": ["number"],
    },
    "price": {
        "label": "Price",
        "type": "number",
        "valueSources": ["value"],
        "fieldSettings": {"min": 10, "max": 100},
        "preferWidgets": ["slider", "rangeslider"],
        "operators": ["equal", "between"],
    },
    "color": {
        "label": "Color",
        "type": "select",
        "valueSources": ["value"],
        "fieldSettings": {
            "listValues": [
                {"value": "yellow", "title": "Yellow"},
                {"value": "green", "title": "Green"},
                {"value": "orange", "title": "Orange"},
            ]
        },
    },
    "is_promotion": {
        "label": "Promo?",
        "type": "boolean",
        "operators": ["equal", "is_empty"],
        "valueSources": ["value"],
    },
}

The basic component can be created via:

from dash import Dash, html
import dash_query_builder as dqb
fields =...
app=Dash(__name__)
app.layout=html.Div([dqb.DashQueryBuilder(fields=fields)])
app.run_server()

This will run the app similar to this:

https://github.com/TillerBurr/dash-query-builder/assets/49296311/1fdc9663-fde7-4c26-a706-00b5edc9f902

There are other properties available as well, with defaults in parentheses.

  • config({}): see CONFIG.adoc for full options
  • theme("basic"): one of "antd", "mui", "fluent", "bootstrap", "basic"
  • loadFormat("tree"): one of "tree", "spelFormat", "jsonLogicFormat"
  • alwaysShowActionButtons(True): A boolean whether to always show action buttons, e.g. "Add Rule", "Add Group", etc.

With the above parameters, a query builder will be created with an empty tree. To pre-populate the query builder, there are several ways to do so:

  1. loadFormat=="tree": Set tree to a valid tree object.
  2. loadFormat=="spelFormat": Set spelFormat to a valid SpEL string.
  3. loadFormat=="jsonLogicFormat": Set jsonLogicFormat to a valid jsonLogic object.

Once loadFormat is set, the tree/query builder will update when the query is changed or when the corresponding property is changed. The loadFormat can be changed via a callback, while keeping the same tree.

Here's an example using usage.py:

https://github.com/TillerBurr/dash-query-builder/assets/49296311/1191a643-27c0-4a4f-8032-2eb5d4b1d88e

Where Parser

DQB has a built-in parser for SQL queries. The parser is relatively simple as far as parsers go, but it does what I need it to. It will parse the query and return a template string and a parameter dictionary. The template string will be in pyformat style, as specified in PEP 249.

Example

from dash_query_builder.where_parser import WhereParser
where_parser = WhereParser()
template, params = where_parser.get_template("qty > 15 and price between 10 and 20")
print(template) # (qty > %(YSaAddDFs27s)s AND price BETWEEN %(W5PRwTGpFqqF)s AND %(N2nGExcGaUSt)s)
print(params) # {'YSaAddDFs27s': 15, 'W5PRwTGpFqqF': 10, 'N2nGExcGaUSt': 20}

Currently, only pyformat is supported. PRs are welcome!

Tools Used

  • uv for Python virtual environment and dependencies.
  • just for common commands
  • mise-en-place to manage the toolchain.

Development

Getting Started

  1. Create a Python environment from previous step 1 and install:
    just sync
    
  2. Update the requirements and dev requirements
    just compile
    
  3. Build
    just build
    
  4. Publish
    just publish
    
  5. See all commands with just -l

Metadata

Release files for dash-query-builder 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dash-query-builder 1.0.1
File Size Uploaded
dash_query_builder-1.0.1.tar.gz 852.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dash-query-builder 1.0.1
File Interpreter ABI Platform
dash_query_builder-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / dash_query_builder-1.0.1.tar.gz

Download URL dash_query_builder-1.0.1.tar.gz
Size 852.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6a0596c0c5a0557f28c314a56afd18b17d6985f12a377ce98cf210bf990afdaa
BLAKE2b-256 checksum
How to use checksums
964fb2f17667d64a2bf36d4d9ad00edfd41edd42e0436798be8f26334fecdf94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2025.

Transparency log

Release files / dash_query_builder-1.0.1-py3-none-any.whl

Download URL dash_query_builder-1.0.1-py3-none-any.whl
Size 878.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b7a4a38acd10c7acb9231cf52e44fdfdf241ee7daa74d5cb5d81328dd930c35
BLAKE2b-256 checksum
How to use checksums
b712110a661d3e7e0087491bddf84dd6743b8609ca8fd10c4da3eb920321f901
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

0.5.2

2 release files

0.5.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page