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 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 (which has compiled binary wheels available for all major platforms) run the following:

sqlite-utils install

pysqlite3 and 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.