gizmodata/adbc-driver-quack — explained in plain English
Analysis updated 2026-05-18
Query a remote DuckDB server from Python or Go and get results as Arrow tables.
Stream large query results in small batches without high memory use.
Bulk load Arrow data you already hold in memory into a remote DuckDB table.
Hand query results directly to Polars or Pandas without extra conversion steps.
| gizmodata/adbc-driver-quack | gokele/ovh | gotoolsharing/vbkview | |
|---|---|---|---|
| Stars | 14 | 14 | 14 |
| Language | Go | Go | Go |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 3/5 | 3/5 | 3/5 |
| Audience | developer | ops devops | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Requires a running DuckDB server with the Quack extension loaded and a secret token.
DuckDB is a fast, embedded database popular with data engineers and analysts. One of its features is the Quack protocol, a way to run a DuckDB instance as a remote server that other programs can connect to over the network. This project, adbc-driver-quack, is a driver that lets you connect to that remote DuckDB server using a standard called ADBC (Apache Arrow Database Connectivity). ADBC matters because it is designed specifically to return data in Apache Arrow format, a column oriented, in memory data layout that moves large datasets between tools without copying or converting them. That means query results arrive as Arrow RecordBatches, which you can immediately hand to data tools that understand Arrow natively, such as Polars, Pandas, or DuckDB running in a local process, all without an expensive serialization step in between. In practice: you start a DuckDB session on a server, install and load the Quack extension, and call one command to make it listen on a port. You then connect from your Python or Go code using a URI like quack://localhost:9494 plus a secret token, and run SQL queries whose results come back as Arrow tables. For large datasets, a streaming mode lets you process one small batch at a time, roughly 2,000 rows per batch, so memory usage stays bounded regardless of result size. You can also push data into the remote DuckDB: the driver supports a bulk ingest path that creates or appends to tables from Arrow data you already have in memory. Available as a Python pip package, supporting macOS, Linux, and Windows on x64 and arm64, and as a Go module. Currently alpha, version 0.1.0-alpha.1. The full README is longer than what was shown.
A driver that connects to a remote DuckDB database and returns query results in a fast, shareable Arrow data format.
Mainly Go. The stack also includes Go, Python, DuckDB.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.