Hide navigation sidebar
Hide table of contents sidebar
Back to top
Toggle table of contents sidebar

# Installation

`sqlite-utils` is tested on Linux, macOS and Windows.

## Using Homebrew

The sqlite-utils command-line tool can be installed on macOS using Homebrew:

    brew install sqlite-utils

If you have it installed and want to upgrade to the most recent release, you can run:

    brew upgrade sqlite-utils

Then run `sqlite-utils --version` to confirm the installed version.

## Using pip

The sqlite-utils package on PyPI includes both the sqlite_utils Python library and the `sqlite-utils` command-line tool. You can install them using `pip` like so:

    pip install sqlite-utils

## Using pipx

pipx is a tool for installing Python command-line applications in their own isolated environments. You can use `pipx` to install the `sqlite-utils` command-line tool like this:

    pipx install sqlite-utils

## Alternatives to sqlite3

By default, `sqlite-utils` uses the `sqlite3` package bundled with the Python standard library.

Depending on your operating system, this may come with some limitations.

On some platforms the ability to load additional extensions (via `conn.load_extension(...)` or `--load-extension=/path/to/extension`) may be disabled.

You may also see the error `sqlite3.OperationalError: table sqlite_master may not be modified` when trying to alter an existing table.

You can work around these limitations by installing either the pysqlite3 package or the sqlean.py package, both of which provide drop-in replacements for the standard library `sqlite3` module but with a recent version of SQLite and full support for loading extensions.

To install `sqlean.py` (which has compiled binary wheels available for all major platforms) run the following:

    sqlite-utils install sqlean.py

`pysqlite3` and `sqlean.py` do not provide implementations of the `.iterdump()` method. To use that method (see Dumping the database to SQL) or the `sqlite-utils dump` command you should also install the `sqlite-dump` package:

    sqlite-utils install sqlite-dump

## Setting up shell completion

You can configure shell tab completion for the `sqlite-utils` command using these commands.

For `bash`:

    eval "$(_SQLITE_UTILS_COMPLETE=bash_source sqlite-utils)"

For `zsh`:

    eval "$(_SQLITE_UTILS_COMPLETE=zsh_source sqlite-utils)"

Add this code to `~/.zshrc` or `~/.bashrc` to automatically run it when you start a new shell.

See the Click documentation for more details.