Driver Manager¶
The adbc_driver_manager package provides a driver manager interface
for Python. The package provides two APIs:
Low-level bindings that are essentially the same as the C API.
If PyArrow or Polars are installed, a DBAPI (PEP 249) compliant interface.
Installation¶
pip install adbc_driver_manager
Usage¶
The driver manager is different from the individual, driver-specific packages
such as adbc_driver_postgresql.
With the driver-specific packages, you connect to the target database with the
connect method provided by the package you’re using. For example,
adbc_driver_postgresql.connect() or adbc_driver_sqlite.connect().
The driver shared library is bundled with the respective package and loaded
invisibly for the user.
With the driver manager package, you use a single package and API regardless of the database you’re connecting to. However, the user must install the driver for their database as a separate step. Driver manifests are a first step in making this experience better for users but more work is planned to make this as straightforward as using driver-specific packages.
Low-Level API¶
First, create an AdbcDatabase, passing driver and (optionally)
entrypoint. Then, create an AdbcConnection.
Note
See ADBC Driver Manager and Manifests for more information on what to pass as the driver argument and how the driver manager finds and loads drivers.
import adbc_driver_manager
# Note: You must install the driver shared library (.so, .dylib, .dll)
# separately
with adbc_driver_manager.AdbcDatabase(driver="PATH/TO/libadbc_driver_sqlite.so") as db:
with adbc_driver_manager.AdbcConnection(db) as conn:
pass
Connecting to a second database could be done in the same session using the same
code just with a different driver argument.
DBAPI API¶
Use the DBAPI API by calling the dbapi.connect method, passing driver
and (optionally) entrypoint. These arguments work the same as with the
low-level API.
from adbc_driver_manager import dbapi
# Note: You must install the driver shared library (.so, .dylib, .dll)
# separately
with dbapi.connect(driver="PATH/TO/libadbc_driver_sqlite.so") as conn:
pass
API Reference¶
See the API reference: adbc_driver_manager.