- ADBC Drivers
- Hardcharger
Arrow from query to ingest
Read results as Arrow record batches and pass another ADBC driver’s reader directly to Hardcharger’s bulk ingest. Large results and uploads can use parallel connections.
Sign in as yourself
Use passwords, browser SSO, identity-provider token exchange or client-certificate sign-in. TLS is the default for hardcharger:// connections.
One driver, many languages
The Python wheel includes the native shared library. ADBC’s C API also connects Go, C/C++, R, Rust and other clients through a driver manager.
One C API. Every language.
The examples on this page are in Python, but ADBC exposes each driver as a C-compatible shared library — so the same native core works from Go, Rust, Java, C#, C/C++, JavaScript, and more. One driver, every stack.
Install and query
Install the Python wheel, set your server URI and credentials in the environment, then stream query results as Arrow batches. No pandas conversion is required.
1# pip install adbc-driver-hardcharger
2import os
3from adbc_driver_hardcharger import dbapi as hardcharger
4
5with hardcharger.connect(
6 uri=os.environ["HARDCHARGER_URI"],
7 username=os.environ["HARDCHARGER_USERNAME"],
8 password=os.environ["HARDCHARGER_PASSWORD"],
9) as conn, conn.cursor() as cur:
10 cur.execute("SELECT 42 AS answer, ? AS greeting", ["hello"])
11 for batch in cur.fetch_record_batch():
12 print(batch)HARDCHARGER_URI is hardcharger://host:31337 with TLS. Use hardcharger://localhost:31337?tls=false only for a local development server.
Browser SSO and mTLS
Use the identity provider configured on your server, or sign in with a client certificate. These features are included in Hardcharger; your administrator must enable the corresponding server configuration.
1from adbc_driver_hardcharger import dbapi as hardcharger
2
3# Browser SSO: the server must have an identity provider configured.
4with hardcharger.connect(uri="hardcharger://db.example.com", auth_type="external") as conn:
5 print(conn.current_user())
6
7# Client-certificate sign-in: the server must enable mTLS sign-in.
8with hardcharger.connect(
9 uri="hardcharger://db.example.com",
10 auth_type="client_certificate",
11 tls_root_certs="ca.pem",
12 tls_client_cert="client.pem",
13 tls_client_key="client-key.pem",
14) as conn:
15 print(conn.current_user())Stream data into Hardcharger
Bulk ingest accepts an Arrow reader, so batches can be produced and consumed incrementally. This example creates a new table; use mode="append" to load an existing compatible table.
1# pip install adbc-driver-hardcharger pyarrow
2import os
3import pyarrow as pa
4from adbc_driver_hardcharger import dbapi as hardcharger
5
6schema = pa.schema([("id", pa.int64()), ("amount", pa.float64())])
7
8def batches():
9 for start in range(0, 4000, 1000):
10 yield pa.record_batch(
11 [pa.array(range(start, start + 1000), type=pa.int64()),
12 pa.array([12.50] * 1000, type=pa.float64())],
13 schema=schema,
14 )
15
16with hardcharger.connect(
17 uri=os.environ["HARDCHARGER_URI"],
18 username=os.environ["HARDCHARGER_USERNAME"],
19 password=os.environ["HARDCHARGER_PASSWORD"],
20) as conn, conn.cursor() as cur:
21 with pa.RecordBatchReader.from_batches(schema, batches()) as reader:
22 rows = cur.adbc_ingest(table_name="orders", data=reader, mode="create")
23 print(f"Loaded {rows:,} rows")Streaming from another database works the same way: pass the source cursor’s fetch_record_batch() reader as data. Keep the source cursor open while Hardcharger consumes it.
More Hardcharger integrations →Hardcharger ADBC driver — FAQ
Is the Hardcharger driver free?
Yes. The driver and the Hardcharger server are open source under Apache-2.0. Every server feature is included, with no edition fee.
Does this replace the GizmoSQL ADBC driver?
Use adbc-driver-hardcharger for Hardcharger over Warp SQL. Keep adbc-driver-gizmosql for existing GizmoSQL servers over Arrow Flight SQL. The drivers share the ADBC interface, but use different wire protocols.
How do I stream data from Oracle, Db2 or Quack?
Open the source and Hardcharger connections, execute a source query, and pass fetch_record_batch() to the destination cursor’s adbc_ingest(). Keep both connections open until ingestion finishes. The driver pages include complete examples.
How do TLS and browser sign-in work?
hardcharger://host:31337 uses TLS by default. Add ?tls=false only for local development. For browser SSO, connect with auth_type="external" to a server configured with an identity provider. Client-certificate sign-in requires the server’s mTLS sign-in configuration.
Ready to move your data?
Install Hardcharger for free and use ADBC drivers to stream your first table.