BigQuery ADBC driver for Python
bigquery-adbc gives Python columnar access to Google BigQuery, through a DB-API 2.0 interface or
the low-level ADBC API. Results arrive as Arrow, and bulk ingestion streams Arrow to the BigQuery
Storage Write API. The wheels bundle the native Rust driver; a Rust toolchain is needed only when
building from source.
Requires Python 3.11 or newer.
This project is experimental and AI-generated, and has not seen real-world use. See the known limitations.
Install
python3 -m pip install "bigquery-adbc[dbapi]"
The dbapi extra installs PyArrow; the pandas extra also adds pandas for cursor.fetch_df(). The
low-level bigquery_adbc.connect() API needs neither.
To build from source, install Rust, then run this from the repository root. The build uses the repository's pinned Rust toolchain:
python3 -m pip install "./python[dbapi]"
To install a built wheel, replace ./python with its path.
Usage
The driver uses Application Default Credentials (ADC) by default. For local development, set them up with:
gcloud auth application-default login
Replace my-gcp-project with a project where those credentials can run BigQuery jobs:
from bigquery_adbc import dbapi
with dbapi.connect("bigquery:///my-gcp-project", autocommit=True) as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT 1")
print(cursor.fetchone())
cursor.fetch_arrow_table() reads a result as Arrow and cursor.fetch_df() as pandas. See
more examples of bulk ingestion and
query parameters.
The low-level ADBC API can take its whole configuration as options:
import bigquery_adbc as bigquery
with bigquery.connect(
db_kwargs={
bigquery.DatabaseOptions.PROJECT_ID: "my-gcp-project",
}
) as database:
print(database.get_option(bigquery.DatabaseOptions.PROJECT_ID))
bigquery.connect() returns an adbc_driver_manager.AdbcDatabase; dbapi.connect() returns a
DB-API connection. Both accept a URI, db_kwargs, or both, and explicit options override URI
parameters. See connection URIs
for dataset, location, quota-project and impersonation settings.
Transactions, batching, and errors
Use autocommit=True for independent queries. With the PEP 249 default, autocommit=False, the
first query that needs a transaction opens a BigQuery session. BigQuery rejects permanent-table
DDL such as CREATE TABLE inside a transaction, and the driver rejects adbc_ingest. Leaving
the with block rolls back uncommitted work; call connection.commit() first to keep it.
executemany executes the query once per parameter row. For bulk inserts, use cursor.adbc_ingest,
which streams rows through the Storage Write API. On a reused cursor, an adbc_ingest call that
omits catalog_name or db_schema_name keeps the previous call's value; pass "" for the
connection's default
(UP-95).
Invalid credentials raise ProgrammingError; transient token-exchange failures raise
OperationalError. Catch dbapi.DatabaseError to handle both. See
error statuses.
Set ADBC_DRIVER_BIGQUERY_LOG_LEVEL=warn before the first connect() to log Storage Read fallbacks
and failed cancellations to standard error; debug also logs retries. Jupyter shows these in the
kernel console. See diagnostics.
Options
Configure database and connection options when connecting, and statement options on a cursor:
| Enum | Set with | Examples |
|---|---|---|
DatabaseOptions |
connect(db_kwargs={...}) |
Credentials, project, dataset and location. |
ConnectionOptions |
dbapi.connect(conn_kwargs={...}) |
Catalog, schema and result reading. |
StatementOptions |
cursor.adbc_statement.set_options(**{...}) |
Parameters, query limits and ingestion. |
Pass autocommit as a keyword to dbapi.connect(), not in conn_kwargs. New statements inherit
their connection's read controls and bulk-ingest method.
Option enums are StrEnums and work directly as keys and values:
str(DatabaseOptions.PROJECT_ID) is "bigquery.project_id".
The manager's typed getters need .value, for example
statement.get_option_float(StatementOptions.PROGRESS.value).
BulkIngestMethod.STORAGE_WRITE is the only supported bulk-ingest method; the raw value "load"
returns NOT_IMPLEMENTED. StatementOptions.QUERY_MAXIMUM_BILLING_TIER also returns
NOT_IMPLEMENTED; use QUERY_MAXIMUM_BYTES_BILLED to cap query cost.
See the option reference
for defaults, constraints, and write-only credential options. Reading uri returns the configured
URI with credentials redacted; read individual options to see the effective configuration.
Development
Package builds, local tests and loading a development driver are covered in the Python development guide.
Metadata
Release files for bigquery-adbc 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bigquery_adbc-0.6.0.tar.gz | 1.7 MB | With provenance | Details for bigquery_adbc-0.6.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| bigquery_adbc-0.6.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details for bigquery_adbc-0.6.0-py3-none-win_amd64.whl |
| bigquery_adbc-0.6.0-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details for bigquery_adbc-0.6.0-py3-none-manylinux_2_28_x86_64.whl |
| bigquery_adbc-0.6.0-py3-none-manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64 | Details for bigquery_adbc-0.6.0-py3-none-manylinux_2_28_aarch64.whl |
| bigquery_adbc-0.6.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details for bigquery_adbc-0.6.0-py3-none-macosx_11_0_arm64.whl |
| bigquery_adbc-0.6.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details for bigquery_adbc-0.6.0-py3-none-macosx_10_12_x86_64.whl |
Total release size: 22.2 MB
Release files / bigquery_adbc-0.6.0.tar.gz
| Download URL | bigquery_adbc-0.6.0.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b9267a9287f0b55ea2c853c36fb971bdf25be6c0208050213799a264457528ff
|
|
BLAKE2b-256 checksum How to use checksums |
022c88cb8f36bf81c4304ea723fe813984d6c99d3dd472ae5d96d3dec82ff51c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 11, 2026.
Transparency logRelease files / bigquery_adbc-0.6.0-py3-none-win_amd64.whl
| Download URL | bigquery_adbc-0.6.0-py3-none-win_amd64.whl |
|---|---|
| Size | 4.4 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
91eba3399037fa1cb17be1a197cf76d34c75120ef815f1a7b9ebb4b566c6ae0e
|
|
BLAKE2b-256 checksum How to use checksums |
69f30e0daf4d9e001cee725504f4ad5fba5ed6f23cf6fe9baa9ce108b8ab9618
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 11, 2026.
Transparency logRelease files / bigquery_adbc-0.6.0-py3-none-manylinux_2_28_x86_64.whl
| Download URL | bigquery_adbc-0.6.0-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
eaa4a0f72a418a0944eccece79e3c746ba4db09a082306d0654b7174288344bc
|
|
BLAKE2b-256 checksum How to use checksums |
e59d20945828c533af9a0f2e0ebb1abb0d73f99e77d2cf7989634776b225692b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 11, 2026.
Transparency logRelease files / bigquery_adbc-0.6.0-py3-none-manylinux_2_28_aarch64.whl
| Download URL | bigquery_adbc-0.6.0-py3-none-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
57d85b823221c34022c37893a3f6da06bc127c767f2219ed5ecbd09302595f14
|
|
BLAKE2b-256 checksum How to use checksums |
1b8db2411d603be29965d4c0ba1ae739deac11c7975b7584ab1ee074da2376ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 11, 2026.
Transparency logRelease files / bigquery_adbc-0.6.0-py3-none-macosx_11_0_arm64.whl
| Download URL | bigquery_adbc-0.6.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
27920562e843474be8a84b2596cfd611376c98ddd608dcfeda31f798a2a44b86
|
|
BLAKE2b-256 checksum How to use checksums |
8548b71f5aef2b2a0a6245bbd34e13be1ab1e27f22a8f0083027844ee4dcbcce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 11, 2026.
Transparency logRelease files / bigquery_adbc-0.6.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | bigquery_adbc-0.6.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
b76dbc9b77d903e6898f2f3b0018ac416d3a0517722cf640f474850b85535231
|
|
BLAKE2b-256 checksum How to use checksums |
37c0f28df6044f1a3327e2a579f4c1dbfdd6579b157de39eeef86a8ba348d104
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Nov 11, 2026.
Transparency logSecurity for bigquery-adbc 0.6.0
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.
Full provenance
All 6 files in this release have been uploaded with provenance metadata.
Attestation for bigquery_adbc-0.6.0.tar.gz
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 Nov 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.