Python CLI utility and library for manipulating SQLite databases https://sqlite-utils.datasette.io
  • Python 99.7%
  • C 0.2%
Find a file
2021-12-10 16:56:50 -08:00
.github Run pytest with colors 2021-11-19 00:09:16 -08:00
docs Also support def convert(value), closes #355 2021-12-10 16:49:28 -08:00
sqlite_utils Also support def convert(value), closes #355 2021-12-10 16:49:28 -08:00
tests Refactor test for #149, spitting it from other rebuild test 2021-12-10 16:56:50 -08:00
.gitignore Ignore test .db files 2021-01-03 10:43:21 -08:00
.readthedocs.yaml Add reference page to documentation using Sphinx autodoc (#312) 2021-08-10 16:09:28 -07:00
codecov.yml Enable codecov.io, refs #275 2021-06-16 16:54:16 -07:00
LICENSE Added LICENSE file 2019-02-23 09:16:57 -08:00
MANIFEST.in Explicitly include tests and docs in sdist (#75) 2020-01-30 16:21:26 -08:00
README.md Corrected stdin example 2021-08-18 16:02:55 -07:00
setup.cfg Now complies with flake8, refs #291 2021-06-22 18:22:08 -07:00
setup.py Release 3.19 2021-11-20 20:41:56 -08:00

sqlite-utils

PyPI Changelog Python 3.x Tests Documentation Status codecov License

Python CLI utility and library for manipulating SQLite databases.

Some feature highlights

Read more on my blog: sqlite-utils: a Python library and CLI tool for building SQLite databases and other entries tagged sqliteutils.

Installation

pip install sqlite-utils

Or if you use Homebrew for macOS:

brew install sqlite-utils

Using as a CLI tool

Now you can do things with the CLI utility like this:

$ sqlite-utils memory dogs.csv "select * from t"
[{"id": 1, "age": 4, "name": "Cleo"},
 {"id": 2, "age": 2, "name": "Pancakes"}]

$ sqlite-utils insert dogs.db dogs dogs.csv --csv
[####################################]  100%

$ sqlite-utils tables dogs.db --counts
[{"table": "dogs", "count": 2}]

$ sqlite-utils dogs.db "select id, name from dogs"
[{"id": 1, "name": "Cleo"},
 {"id": 2, "name": "Pancakes"}]

$ sqlite-utils dogs.db "select * from dogs" --csv
id,age,name
1,4,Cleo
2,2,Pancakes

$ sqlite-utils dogs.db "select * from dogs" --table
  id    age  name
----  -----  --------
   1      4  Cleo
   2      2  Pancakes

You can import JSON data into a new database table like this:

$ curl https://api.github.com/repos/simonw/sqlite-utils/releases \
    | sqlite-utils insert releases.db releases - --pk id

Or for data in a CSV file:

$ sqlite-utils insert dogs.db dogs dogs.csv --csv

sqlite-utils memory lets you import CSV or JSON data into an in-memory database and run SQL queries against it in a single command:

$ cat dogs.csv | sqlite-utils memory - "select name, age from stdin"

See the full CLI documentation for comprehensive coverage of many more commands.

Using as a library

You can also import sqlite_utils and use it as a Python library like this:

import sqlite_utils
db = sqlite_utils.Database("demo_database.db")
# This line creates a "dogs" table if one does not already exist:
db["dogs"].insert_all([
    {"id": 1, "age": 4, "name": "Cleo"},
    {"id": 2, "age": 2, "name": "Pancakes"}
], pk="id")

Check out the full library documentation for everything else you can do with the Python library.

  • Datasette: A tool for exploring and publishing data
  • csvs-to-sqlite: Convert CSV files into a SQLite database
  • db-to-sqlite: CLI tool for exporting a MySQL or PostgreSQL database as a SQLite file
  • dogsheep: A family of tools for personal analytics, built on top of sqlite-utils