qpd
Query Pandas Using SQL
What it is and what it does
QPD is a SQL-to-pandas translator that lets you write SQL SELECT queries and execute them on multiple dataframe backends—Pandas, Dask, and Ray (via Modin)—while guaranteeing consistent results across all of them. Rather than converting dataframes to SQLite, running SQL, and converting back, QPD directly translates SQL into the native operations of each backend, which can be faster. It prioritizes correctness and consistency: for example, it follows SQL semantics for NULL handling in GROUP BY rather than the default pandas behavior of dropping null groups.
The package depends on pandas, triad, adagio, and antlr4-python3-runtime. It supports Python 3.7 through 3.10 and is classified as production-stable. However, it has been abandoned since 2023-07-12 with no updates since then, so it will not receive bug fixes or compatibility patches for newer versions of its dependencies or Python itself.
Use it for:
- Run the same SQL query on Pandas, Dask, or Ray without rewriting logic for each backend.
- Migrate SQL workloads from SQLite or other databases to distributed dataframe frameworks while keeping queries unchanged.
- Ensure consistent GROUP BY and aggregation behavior across backends by using SQL semantics instead of framework defaults.
- Prototype data transformations in SQL before scaling them to Dask or Ray clusters.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
QPD translates SQL SELECT statements into pandas-like operations, letting you run the same SQL query on Pandas, Dask, and Ray backends and get consistent results.
Yes, if you need to run SQL on Pandas, Dask, or Ray and can tolerate an abandoned package. The low install friction and permissive license make it a low-risk experiment. However, do not rely on it for production workloads without testing thoroughly against your current dependency versions—no updates have been released since 2023-07-12, so compatibility with newer pandas, Dask, Ray, or Python versions is not guaranteed.
Install
qpd on PyPI
pip
pip install qpduv
uv add qpdpoetry
poetry add qpdInstalling qpd
Before you install
Low install friction with a pure-Python wheel. Maintenance is abandoned—the package has not been updated since 2023-07-12 (1129 days ago), so expect no bug fixes or compatibility updates for newer Python or dependency versions.
License in practice
Apache-2.0 is permissive and places no restrictions on commercial or private use, though you must retain license notices and disclose any modifications you distribute.
Quickstart
pip install qpd
import qpd
# Run SQL on pandas, Dask, or Ray backends via qpd's submodules
Requires Python >=3.7; runtime dependencies (pandas, triad, adagio, antlr4-python3-runtime) must be installed.
Verify before relying
- Whether the package remains compatible with current versions of pandas, Dask, Ray, and Modin given its abandoned status.
- Whether SQL feature coverage has expanded beyond SELECT statements since version 0.4.4.
- Performance characteristics on large datasets or complex queries compared to direct backend SQL engines.
- Specific API entry points and usage patterns for each backend (Pandas, Dask, Ray).
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.7) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — pandas, triad, adagio, antlr4-python3-runtime |
| Maintenance | abandoned — 1,129 days since the last release |
| First released | |
| Downloads | 350,688/month — #7,329 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: qpd-0.4.4-py3-none-any.whl
Keywords: pandas, sql
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
dask-exprDask Expressions provides query optimization…
permissive · top 5,000 on PyPI
pandasqlpandasql lets you query pandas DataFrames using…
unclear · top 5,000 on PyPI
pangresUpserts pandas DataFrames into PostgreSQL,…
permissive · top 15,000 on PyPI
gw-dsl-parserConverts graphic-walker workflow definitions…
permissive · top 15,000 on PyPI
triadTriad provides utility functions for working…
permissive · top 5,000 on PyPI
bcpandasWraps SQL Server's BCP utility to transfer data…
permissive · top 15,000 on PyPI
pandas-tdPandas-TD connects pandas DataFrames to…
permissive · top 15,000 on PyPI
datacompyDataComPy compares two DataFrames across…
permissive · top 5,000 on PyPI
ibis-frameworkIbis is a portable Python dataframe library…
permissive · top 5,000 on PyPI
dirsqlWatches a local directory, indexes structured…
permissive · top 15,000 on PyPI