Clients¶
Besides the embedded datap-rs wheel (which can both
run a server and talk to it), DataPress ships standalone clients that
only talk to an already-running server over HTTP. The CLI, Python, and Rust
clients share one lightweight Rust core (datapress-client) and are
independent of the server crates — no DuckDB or DataFusion is pulled in. A
separate pure-Java JDBC driver lets BI tools connect over standard
java.sql. The DataFusion backend can also expose a
PostgreSQL wire-protocol endpoint that any Postgres client
can talk to directly.
| Client | Package | Install |
|---|---|---|
| Command line | datapress-cli |
install script, cargo install |
| Python | datap-rs-client |
uv pip install datap-rs-client[arrow] |
| Rust library | datapress-client |
cargo add datapress-client |
| JDBC driver | datapress-jdbc |
Maven Central org.datap-rs:datapress-jdbc |
| PostgreSQL (pgwire) | (any PG client) | built-in; enable [server.pgwire] |
The CLI, Python, and Rust clients speak the same
HTTP API: list datasets, fetch schemas, run
structured queries (JSON or Arrow IPC), count rows, run raw SQL, and reload
datasets. The JDBC driver exposes the raw-SQL path through java.sql. The
PostgreSQL endpoint speaks the native Postgres protocol instead of HTTP.
Which one?¶
- CLI — shell scripts, ad-hoc inspection, piping JSON into
jqor Arrow into a file. - Python — notebooks and pipelines;
query_arrow()returns apyarrow.Tablethat feeds Polars, pandas, DuckDB, PySpark, and DataFusion zero-copy. - Rust — embed the client in your own service or tool; async by default with an optional blocking wrapper.
- JDBC — connect BI/SQL tools (DBeaver, DataGrip) and JVM apps over standard
java.sql; read-onlySELECTstreamed as Arrow. Requires the server's raw-SQL endpoint to be enabled. - PostgreSQL (pgwire) — point
psql, Postgres drivers, or BI tools (Power BI, Tableau) at DataPress using the native PostgreSQL protocol. DataFusion backend only, opt-in via thepgwirebuild feature.