Python's sqlite3 with extensions

Adding SQLite extensions with Python's sqlite3 module is a breeze. Download a file, call a few functions, and you are good to go. Unless you try to do it on macOS, where sqlite3 is compiled without extension support.

I wanted to make the process even easier (and of course solve the macOS problem). So I created the package: a drop-in replacement for the standard library's sqlite3 module, bundled with the essential extensions.


Installation and usage

All you need to do is pip install the package:

pip install

And use it just like you'd use sqlite3:

import sqlean as sqlite3

# has the same API as the default `sqlite3` module
conn = sqlite3.connect(":memory:")
conn.execute("create table employees(id, name)")

# and comes with the `sqlean` extensions
cur = conn.execute("select median(value) from generate_series(1, 99)")
# (50.0,)


Note that the package name is, while the code imports are just sqlean. The sqlean package name was taken by some zomby project and the author seemed to be unavailable, so I had to add the .py suffix.

Extensions contains 12 essential SQLite extensions:

  • crypto: Hashing, encoding and decoding data
  • define: User-defined functions and dynamic SQL
  • fileio: Reading and writing files
  • fuzzy: Fuzzy string matching and phonetics
  • ipaddr: IP address manipulation
  • math: Math functions
  • regexp: Regular expressions
  • stats: Math statistics
  • text: Advanced string functions
  • unicode: Unicode support
  • uuid: Universally Unique IDentifiers
  • vsv: CSV files as virtual tables


The package is available for the following operating systems:

  • Windows (64-bit)
  • Linux (64-bit)
  • macOS (both Intel and Apple processors)

You can also compile it from source if necessary.

See the package repo for details.

 Subscribe to keep up with new posts.