Skip to main content

adbcBridge (Python)

Thin Python wrapper around adbcBridge, the ADBC driver for any ODBC data source. It finds the libadbc_driver_odbc shared library and hands it to adbc_driver_manager, so every ODBC driver on the machine becomes an Arrow-native ADBC database.

pip install adbcbridge
import adbcbridge

with adbcbridge.connect(uri="Driver=SQLite3;Database=my.db;") as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM t")
        table = cur.fetch_arrow_table()   # pyarrow.Table

connect() returns a plain adbc_driver_manager.dbapi.Connection, so the whole ADBC DBAPI surface (cursor(), fetch_arrow_table(), adbc_ingest(), adbc_get_objects(), …) is available.

API

adbcbridge.connect(uri=None, dsn=None, username=None, password=None,
                   driver_path=None, *, autocommit=False, conn_kwargs=None,
                   **options) -> adbc_driver_manager.dbapi.Connection
adbcbridge.driver_path() -> str            # path of libadbc_driver_odbc.so
adbcbridge.odbc_drivers() -> list[OdbcDriver]   # from odbcinst.ini
adbcbridge.odbcinst_ini() -> pathlib.Path | None
adbcbridge.odbc_driver_library(driver=None, *, uri=None, dsn=None) -> str | None
adbcbridge.preload_odbc_driver(driver=None, *, uri=None, dsn=None,
                               strict=False) -> str | None

import adbcbridge does not import pyarrow: adbc_driver_manager.dbapi is imported inside connect(), after the ODBC driver named in the connection string has been opened. A few ODBC drivers — MySQL Connector/ODBC is the one in the wild — can only be loaded while libstdc++ has not yet been pinned to dynamic thread-local storage, which importing pyarrow does. preload_odbc_driver() is that step on its own, for programs that drive adbc_driver_manager or pyodbc themselves; ADBCBRIDGE_PRELOAD=0 disables the automatic one in connect(). See docs/TROUBLESHOOTING.md.

Extra **options become database options: a bare name is prefixed with adbc.odbc. (batch_size=4096 → adbc.odbc.batch_size), a dotted name is passed through as given, and True/False become "true"/"false".

conn = adbcbridge.connect(
    uri="Driver=/usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so;Server=127.0.0.1;Database=app;",
    username="app", password="secret",
    batch_size=4096, decimal_as_string=True,   # adbc.odbc.*
)

Finding the driver library

driver_path() looks, in order, at

  1. the ADBC_ODBC_DRIVER environment variable (an explicit value that does not exist is an error, not a silent fallback);
  2. a copy bundled inside this package (see below);
  3. the ADBC driver manifest named odbc — odbc.toml under $ADBC_DRIVER_PATH, <sys.prefix>/etc/adbc/drivers, ~/.config/adbc/drivers, /etc/adbc/drivers, … — as installed by cmake --install build --prefix "$VIRTUAL_ENV";
  4. common install locations: <sys.prefix>/lib, /usr/local/lib, /usr/lib, /usr/lib/<arch>-linux-gnu, and a build/ tree next to a source checkout (so pip install -e python works right after cmake --build build).

If nothing matches it raises adbcbridge.DriverNotFoundError.

Command line

adbcbridge query "Driver=SQLite3;Database=my.db;" "SELECT * FROM t"
adbcbridge query "Driver=SQLite3;Database=my.db;" "SELECT * FROM t WHERE i > ?" -p 3
adbcbridge query ... --format csv > out.csv     # or --format schema, --limit N
adbcbridge drivers            # ODBC drivers from odbcinst -j / odbcinst.ini
adbcbridge driver-path        # which libadbc_driver_odbc.so would be used

Building a wheel with the driver bundled

The wheel is pure Python unless a driver library is around at build time, in which case setup.py copies it into the package and tags the wheel for the current platform:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build
python -m pip install build
python -m build --wheel python          # picks up ./build/libadbc_driver_odbc.so

Point it somewhere else with ADBCBRIDGE_LIBRARY=/path/to/libadbc_driver_odbc.so (or ADBCBRIDGE_BUILD_DIR=/path/to/cmake-build-tree). Without either, and with no build/ tree, the wheel contains no binary and driver_path() falls back to the manifest or a system-wide install at run time.

Tests

pip install -e python
SQLITE_ODBC_DRIVER=/path/to/libsqlite3odbc.so \
ADBC_ODBC_DRIVER=$PWD/build/libadbc_driver_odbc.so \
  pytest python/tests

Apache-2.0.

Metadata

Release files for adbcbridge 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for adbcbridge 0.1.1
File Size Uploaded
adbcbridge-0.1.1.tar.gz 24.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for adbcbridge 0.1.1
File
adbcbridge-0.1.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
adbcbridge-0.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
adbcbridge-0.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
adbcbridge-0.1.1-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 804.6 kB

Release files / adbcbridge-0.1.1.tar.gz

Download URL adbcbridge-0.1.1.tar.gz
Size 24.4 kB
Tags Source
SHA-256 checksum
How to use checksums
048055aed64a4781078194d5d9a95c42e1a0c24e18eaad31dfed22d2456eade9
BLAKE2b-256 checksum
How to use checksums
1de369048bf7586b164188e6a5697bbd134ba1beff7073f9c7197334ce79fb7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

Release files / adbcbridge-0.1.1-py3-none-win_amd64.whl

Download URL adbcbridge-0.1.1-py3-none-win_amd64.whl
Size 150.6 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
a7ffcda54a8d46afef2311f8b32969cad6c86174f350b1e23be4a19c95d1d317
BLAKE2b-256 checksum
How to use checksums
b8a61e7a9a038f0d1dae78329c358a9585d66827e0a684257c79247fcc48fe59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

Release files / adbcbridge-0.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL adbcbridge-0.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 229.5 kB
Tags Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
2dbae28ab901f6254d55b7a5648f9a1e02a9b95c76cd16f2fc5fbd554bcf3879
BLAKE2b-256 checksum
How to use checksums
c6067c5a6aa99b03ec978d678b2d543cfad1e9c8458ebbe67640ac121f2e8fe8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

Release files / adbcbridge-0.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL adbcbridge-0.1.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 223.2 kB
Tags Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
8afc057c7fdb01559114e708ca3d09d1e11cc000a31030df17c5fd647fead92d
BLAKE2b-256 checksum
How to use checksums
39e111a3d75ca6417e21bf70c291f82208ef072685c35e625124bd66e46ea79e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

Release files / adbcbridge-0.1.1-py3-none-macosx_14_0_arm64.whl

Download URL adbcbridge-0.1.1-py3-none-macosx_14_0_arm64.whl
Size 176.9 kB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
632dbbb08abc1eca3f65005d14a9e3ec2ab5aad6fe780c32700a2e33f5e79e4f
BLAKE2b-256 checksum
How to use checksums
0bdd31d9a6c6ecd5ad873fed589df685d30ed7a17cc786f53d7f27f2a9dae9c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.3

5 release files

0.1.2

5 release files

This release

0.1.1 This release

5 release files

0.1.0

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page