Skip to content

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 jq or Arrow into a file.
  • Python — notebooks and pipelines; query_arrow() returns a pyarrow.Table that 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-only SELECT streamed 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 the pgwire build feature.