Today we're shipping version 2.0 of the GizmoSQL ADBC driver — the biggest change to GizmoSQL's client story since the driver first launched. The driver core has been rewritten in Go and compiles to a native shared library, with the Python package you already know reduced to a thin wrapper on top. Same features, same API — but now any language with an ADBC driver manager gets the full GizmoSQL experience, not just Python.
The new home for the project is github.com/gizmodata/gizmosql-adbc. The previous Python-only 1.x repository (adbc-driver-gizmosql) has been archived — but don't worry, the PyPI package name is unchanged and 2.0 is designed as a drop-in upgrade.
Why rewrite it in Go?
The 1.x driver was a Python library. It worked great — OAuth/SSO browser flows, automatic DDL/DML routing, connection profiles — but every one of those features lived in Python code, which meant they were only available to Python users. Anyone connecting from Go, R, Rust, or C# fell back to the generic Flight SQL driver and lost the GizmoSQL-specific behavior.
ADBC's architecture offers a better way: implement the driver once as a native shared library, and let every language load it through the ADBC driver manager. Go is the natural fit — it's what the upstream Apache Arrow ADBC Flight SQL driver is built in, it cross-compiles cleanly to every platform GizmoSQL supports, and it produces a single self-contained library with no runtime dependencies.
So that's what 2.0 is: one Go core, every language. Python, Go, R, C/C++, C#, Rust, and JavaScript all load the same driver and get the same behavior.
The GizmoSQL goodies — now everywhere
Everything that made the 1.x Python driver more pleasant than a generic Flight SQL connection now lives in the shared core:
- OAuth / SSO authentication — external identity-provider auth with a browser flow for interactive use and a headless mode for CI and services. Sign in with your company IdP instead of passing passwords around.
- Automatic DDL/DML detection —
CREATE,INSERT,UPDATE,DELETE, and friends are auto-detected and routed through Flight SQL'sDoPutpath for immediate server-side execution — no more wondering why your DDL "query" returned an empty result set. - RETURNING support —
INSERT / UPDATE / DELETE ... RETURNINGresults are eagerly materialized and handed back to you like any other result set. - The
gizmosql://URI scheme — a clean connection URI with TLS on by default. - ADBC connection profiles — the reusable TOML profiles introduced in 1.2.0 carry forward, with environment-variable substitution keeping credentials out of your code.
- Bulk ingest — high-throughput, geometry-preserving loads via
cursor.adbc_ingest. - OpenTelemetry observability — tracing and logging inherited from the upstream Flight SQL driver foundation.
Python: same package, drop-in upgrade
The Python package keeps its name on PyPI, and the 2.x API is byte-compatible with the 1.x driver — your existing code keeps working:
pip install --upgrade adbc-driver-gizmosql1from adbc_driver_gizmosql import dbapi as gizmosql
2
3with gizmosql.connect("gizmosql://localhost:31337",
4 username="gizmosql_username",
5 password="gizmosql_password") as conn:
6 with conn.cursor() as cur:
7 cur.execute("SELECT 42 AS answer")
8 print(cur.fetch_arrow_table())Under the hood, the wheel now bundles the Go-built shared library for your platform and loads it through the ADBC driver manager — but from your code's point of view, nothing changed.
Go: a first-class native client
Go developers get a real driver of their own, versioned independently via go/vX.Y.Z tags:
go get github.com/gizmodata/gizmosql-adbc/go@latestdrv := gizmosql.NewDriver(memory.DefaultAllocator)
db, err := drv.NewDatabase(map[string]string{
"uri": "gizmosql://localhost:31337",
"username": "gizmosql_username",
"password": "gizmosql_password",
})Everything else: the driver manager
For R, Rust, C#, C/C++, and JavaScript, install the shared library and reference it from your language's ADBC driver manager with driver="gizmosql". One driver definition, one set of behaviors, every runtime.
The whole client ecosystem moved with it
A driver rewrite is only useful if the tools you actually use come along. As of today, the full family of GizmoSQL client packages and utilities has been updated to the 2.0 driver:
- dbt-gizmosql — the dbt adapter
- sqlmesh-gizmosql — the SQLMesh adapter
- qgizmosql — the QGIS plugin for spatial data
- sqlframe-gizmosql — the PySpark DataFrame API
- @gizmodata/gizmosql-client — the Node.js client, which in turn powers the new GizmoSQL UI
- …and the rest of the integrations and adapters lineup
If you're using any of these, just upgrade the package — the new driver comes along for the ride.
Upgrading from 1.x
For Python users: pip install --upgrade adbc-driver-gizmosql. That's it. The API is compatible, connection profiles carry over, and grpc+tls:// URIs keep working alongside the new gizmosql:// scheme.
Bookmark-wise: the old repository at github.com/gizmodata/adbc-driver-gizmosql is now archived and read-only. Issues, discussions, and releases all live at github.com/gizmodata/gizmosql-adbc going forward. The driver remains Apache 2.0 licensed, like GizmoSQL Core itself.
Try it
Spin up a GizmoSQL server, pip install adbc-driver-gizmosql (or go get the Go module), and point it at gizmosql://your-host:31337. If you hit anything, come tell us in the GizmoData Community Slack — we'd love to hear what you build.
— Philip Moore
Founder, GizmoData