Skip to main content

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. It returns Arrow streams, which PyArrow or any library supporting the Arrow PyCapsule interface can read:

import adbc_driver_manager
import bigquery_adbc as bigquery
import pyarrow

with (
    bigquery.connect(db_kwargs={bigquery.DatabaseOptions.PROJECT_ID: "my-gcp-project"}) as database,
    adbc_driver_manager.AdbcConnection(database) as connection,
    adbc_driver_manager.AdbcStatement(connection) as statement,
):
    statement.set_sql_query("SELECT 1 AS n")
    stream, _ = statement.execute_query()
    print(pyarrow.RecordBatchReader.from_stream(stream).read_all())

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. A new statement copies the connection's value of each option both accept, such as QUERY_PREFETCH_CONCURRENCY.

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).

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.7.0

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

Source distribution (sdist)

Source distribution for bigquery-adbc 0.7.0
File Size Uploaded Provenance Actions
bigquery_adbc-0.7.0.tar.gz 1.7 MB With provenance Details for bigquery_adbc-0.7.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for bigquery-adbc 0.7.0
File Actions
bigquery_adbc-0.7.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for bigquery_adbc-0.7.0-py3-none-win_amd64.whl
bigquery_adbc-0.7.0-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details for bigquery_adbc-0.7.0-py3-none-manylinux_2_28_x86_64.whl
bigquery_adbc-0.7.0-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details for bigquery_adbc-0.7.0-py3-none-manylinux_2_28_aarch64.whl
bigquery_adbc-0.7.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for bigquery_adbc-0.7.0-py3-none-macosx_11_0_arm64.whl
bigquery_adbc-0.7.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for bigquery_adbc-0.7.0-py3-none-macosx_10_12_x86_64.whl

Total release size: 22.2 MB

Release files / bigquery_adbc-0.7.0.tar.gz

Download URL bigquery_adbc-0.7.0.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
e5bf9c4f4390e1d8c4194b005e217af5301deed24e1aaf463d1addb8cee208a8
BLAKE2b-256 checksum
How to use checksums
48fe78d8c833f2cfc73fd0664a0395430eb7215f25af162618cc5650a6e48f6b
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 log

Release files / bigquery_adbc-0.7.0-py3-none-win_amd64.whl

Download URL bigquery_adbc-0.7.0-py3-none-win_amd64.whl
Size 4.4 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
afa38702d618e196d5ee44f9c5a5e205dea1bae61eb367d12e42f680ee14560f
BLAKE2b-256 checksum
How to use checksums
ceacf4efe53e2299c30e393ee871a91be9590d517c6c3c7aa35f6b89621b0a13
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 log

Release files / bigquery_adbc-0.7.0-py3-none-manylinux_2_28_x86_64.whl

Download URL bigquery_adbc-0.7.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
40d806350d877780fc1ceeb7a27f7497d97903717bd4414b4636470cec312905
BLAKE2b-256 checksum
How to use checksums
c8003cb168aef8cc52406898f58111f2b5275c4a1edc7c54c90720ddfdd2cdad
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 log

Release files / bigquery_adbc-0.7.0-py3-none-manylinux_2_28_aarch64.whl

Download URL bigquery_adbc-0.7.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
ae04ed835390e4024a20006b1c49db4002facb9e3484c4d5809a335479d319f8
BLAKE2b-256 checksum
How to use checksums
ebe6ad9f444d925f4a77e0697363509195ec9fdcee97fc775499c0f35ca64cd8
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 log

Release files / bigquery_adbc-0.7.0-py3-none-macosx_11_0_arm64.whl

Download URL bigquery_adbc-0.7.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
7ef409577b458942ac67178b9531c500833eb038ccadd8fea7bb8cddc567f0ec
BLAKE2b-256 checksum
How to use checksums
834b1224ee72931ae524dc549b8b7386f22cbed34053539393c52def42ef37e7
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 log

Release files / bigquery_adbc-0.7.0-py3-none-macosx_10_12_x86_64.whl

Download URL bigquery_adbc-0.7.0-py3-none-macosx_10_12_x86_64.whl
Size 4.1 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
bd92807dfac04afb9b8f95f29d84567f0da927cd8bb4ae87bf612c47b2c0fca3
BLAKE2b-256 checksum
How to use checksums
d2d8ca1b3b54cf0093eb10e5e03b468dff1c37a2d711aa7d408a9231e4eacd5b
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 log

Security for bigquery-adbc 0.7.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.

Select from 6 files

Attestation for bigquery_adbc-0.7.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 log

A 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.

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