dbc

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 8, 2026 License: Apache-2.0 Imports: 28 Imported by: 0

README

dbc dbc Logo

License GitHub release (latest SemVer) Release dbc

Overview

dbc is the command-line tool for installing and managing ADBC drivers.

dbc can:

  • Install pre-built ADBC drivers with a single command
  • Install drivers in your user account, on the system, or in virtual environments
  • Manage isolated, reproducible project environments with driver lists and lockfiles
  • Run on macOS, Linux, and Windows
  • Be installed in many ways (with pip, standalone installers, Docker images, and more)
  • Work in CI/CD environments

Installation

There are multiple ways to install dbc:

From PyPI

For simple installation, we recommend the popular pipx tool which will automatically put it on your PATH:

pipx install dbc

You can also just test it out instead of installing it:

pipx run dbc

You can also use a virtual environment:

python -m venv .venv
source .venv/bin/activate
pip install dbc
Standalone Installer
macOS or Linux

You can download the install script and execute it:

curl -LsSf https://dbc.columnar.tech/install.sh | sh

If your system doesn't have curl you can also use wget:

wget -q0- https://dbc.columnar.tech/install.sh | sh

If you want to inspect the script before use, you can simply run:

curl -LsSf https://dbc.columnar.tech/install.sh | less
Windows

Download the Windows graphical installer for your architecture:

Architecture Installer
x64 (64-bit) https://dbc.columnar.tech/latest/dbc-latest-x64.msi

Or use irm to download the install script and execute it with iex:

powershell -ExecutionPolicy ByPass -c "irm https://dbc.columnar.tech/install.ps1 | iex

Changing the execution policy allows running a script from the internet.

Of course, you can also inspect the script before use:

powershell -c "irm https://dbc.columnar.tech/install.ps1 | more"
GitHub Releases

Release artifacts for dbc can also be downloaded directly from GitHub Releases. Included in the artifacts are also cryptographic signatures and a checksum file to ensure nothing has been tampered with.

Each release includes the following assets allowing you to install using your preferred method:

  • .tar.gz or .zip archives containing the appropriate binary for all supported platforms and architectures
  • .deb and .rpm installation packages
  • An msi installer package for Windows
  • .snap packages
  • Python wheel packages that bundle the dbc executable binary
Docker

Docker images are also provided with standalone binaries that can be easily run using:

docker run --rm -it columnar/dbc:latest --help
Available Images

The following distroless images are available for linux-based amd64 and arm64 architectures:

  • columnar/dbc:latest
  • columnar/dbc:{major}.{minor}.{patch}, e.g. columnar/dbc:0.0.1

Homebrew

You can install dbc from our Homebrew tap by running:

$ brew install columnar-tech/tap/dbc

This will automatically configure our tap and install dbc from it. If you'd rather do this as two separate commands, you can run:

$ brew tap columnar-tech/tap
$ brew install dbc

Getting Started

Once you have dbc available to you on the command line, you can install an ADBC driver and make it available to your user. For example, to install the snowflake driver:

dbc install snowflake

Alternately, when working on a project you can create a dbc.toml file to create a list of drivers to install to create a reproducible environment:

cd <path/to/project>
dbc init # creates dbc.toml
dbc add snowflake # adds this to the driver list
dbc sync # install drivers and create dbc.lock

Using dbc add also allows version constraints:

dbc add "snowflake>=1.0.0"
dbc sync # looks for and installs a version >=1.0.0
Using the Driver

The simplest way to use the driver is via Python with adbc-driver-manager. Note: version 1.8.0 added support for driver manifests, so you'll need that version of the driver manager or higher.

dbc install snowflake
pip install "adbc-driver-manager>=1.8.0"

Using the driver is easy:

import adbc_driver_manager.dbapi as adbc

snowflake_connect_args = {
    "username": "USER",
    "password": "PASS",
    "adbc.snowflake.sql.account": "ACCOUNT-IDENT",
    "adbc.snowflake.sql.db": "SNOWFLAKE_SAMPLE_DATA",
    # other connect options
}

with adbc.connect(
    driver="snowflake",
    db_kwargs=snowflake_connect_args,
) as con, con.cursor() as cursor:
    cursor.execute("SELECT * FROM CUSTOMER LIMIT 5")
    table = cursor.fetch_arrow_table()

print(table)

For more detailed information on using dbc, see the documentation. Also check out the ADBC Quickstarts repo to learn how to use ADBC with a variety of languages and databases.

Communications

For general questions and discussion, use the GitHub discussions.

To report an issue, request a feature, or contribute an improvement, use the GitHub issues and PRs.

See CONTRIBUTING.md for more information on contributing.

Code of Conduct

By choosing to contribute to dbc, you agree to follow our Code of Conduct.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnauthorized         = errors.New("not authorized")
	ErrUnauthorizedColumnar = errors.New("not authorized to access")
)
View Source
var (
	Version = "unknown"

	// use this default client for all requests,
	// it will add the dbc user-agent to all requests
	DefaultClient = http.DefaultClient
)

Functions

func SignedByColumnar

func SignedByColumnar(lib, sig io.Reader) error

SignedByColumnar returns nil if the library was signed by the columnar public key (embedded in the CLI) or an error otherwise.

Types

type Driver

type Driver struct {
	Registry *Registry `yaml:"-"`

	Title   string    `yaml:"name"`
	Desc    string    `yaml:"description"`
	License string    `yaml:"license"`
	Path    string    `yaml:"path"`
	URLs    []string  `yaml:"urls"`
	DocsUrl string    `yaml:"docs_url"`
	PkgInfo []pkginfo `yaml:"pkginfo"`
}

func GetDriverList

func GetDriverList() ([]Driver, error)

func (Driver) GetPackage

func (d Driver) GetPackage(version *semver.Version, platformTuple string, allowPrerelease bool) (PkgInfo, error)

func (Driver) GetWithConstraint

func (d Driver) GetWithConstraint(c *semver.Constraints, platformTuple string) (PkgInfo, error)

func (Driver) HasNonPrerelease added in v0.2.0

func (d Driver) HasNonPrerelease() bool

func (Driver) MaxVersion

func (d Driver) MaxVersion() pkginfo

func (Driver) Versions

func (d Driver) Versions(platformTuple string) semver.Collection

type FileProgressModel

type FileProgressModel struct {
	progress.Model
	// contains filtered or unexported fields
}

func NewFileProgress

func NewFileProgress(opts ...progress.Option) FileProgressModel

func (FileProgressModel) Init

func (m FileProgressModel) Init() tea.Cmd

func (*FileProgressModel) SetPercent

func (m *FileProgressModel) SetPercent(written, total int64) tea.Cmd

func (FileProgressModel) Update

func (m FileProgressModel) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (FileProgressModel) View

func (m FileProgressModel) View() string

type PkgInfo

type PkgInfo struct {
	Driver        Driver
	Version       *semver.Version
	PlatformTuple string

	Path *url.URL
}

func (PkgInfo) DownloadPackage

func (p PkgInfo) DownloadPackage(prog ProgressFunc) (*os.File, error)

type ProgressFunc

type ProgressFunc func(written, total int64)

type Registry added in v0.2.0

type Registry struct {
	Name    string
	Drivers []Driver
	BaseURL *url.URL
}

type SimpleItemDelegate

type SimpleItemDelegate struct {
	Prompt string
}

func (SimpleItemDelegate) Height

func (d SimpleItemDelegate) Height() int

func (SimpleItemDelegate) Render

func (d SimpleItemDelegate) Render(w io.Writer, m list.Model, index int, listItem list.Item)

func (SimpleItemDelegate) Spacing

func (d SimpleItemDelegate) Spacing() int

func (SimpleItemDelegate) Update

func (d SimpleItemDelegate) Update(tea.Msg, *list.Model) tea.Cmd

Directories

Path Synopsis
cmd
dbc command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL