Oven logo

Oven

sqlean.py3.49.1

Published

sqlite3 with extensions

pip install sqlean-py

Package Downloads

Weekly DownloadsMonthly Downloads

Project URLs

Requires Python

>=3.9

Dependencies

    sqlean.py

    This package provides an SQLite Python wrapper bundled with sqlean extensions. It's a drop-in replacement for the standard library's sqlite3 module.

    pip install sqlean.py
    
    import sqlean
    
    # enable all extensions
    sqlean.extensions.enable_all()
    
    # has the same API as the default `sqlite3` module
    conn = sqlean.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)")
    print(cur.fetchone())
    # (50.0,)
    
    conn.close()
    

    Extensions

    sqlean.py 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: String functions
    • unicode: Unicode support
    • uuid: Universally Unique IDentifiers
    • vsv: CSV files as virtual tables

    Installation

    A binary package (wheel) is available for the following operating systems:

    • Windows (64-bit)
    • Linux (64-bit)
    • macOS (both Intel and Apple processors)
    pip install sqlean.py
    

    Note that the package name is sqlean.py, 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.

    Usage

    All extensions are disabled by default. You can still use sqlean as a drop-in replacement for sqlite3:

    import sqlean as sqlite3
    
    conn = sqlite3.connect(":memory:")
    cur = conn.execute("select 'sql is awesome'")
    print(cur.fetchone())
    conn.close()
    

    To enable all extensions, call sqlean.extensions.enable_all() before calling connect():

    import sqlean
    
    sqlean.extensions.enable_all()
    
    conn = sqlean.connect(":memory:")
    cur = conn.execute("select median(value) from generate_series(1, 99)")
    print(cur.fetchone())
    conn.close()
    

    To enable specific extensions, call sqlean.extensions.enable():

    import sqlean
    
    sqlean.extensions.enable("stats", "text")
    
    conn = sqlean.connect(":memory:")
    cur = conn.execute("select median(value) from generate_series(1, 99)")
    print(cur.fetchone())
    conn.close()
    

    Building from source

    For development purposes only.

    Prepare source files:

    make prepare-src
    make download-sqlite
    make download-sqlean
    

    Build and test the package:

    make clean
    python setup.py build_ext -i
    python -m tests
    python -m pip wheel . -w dist
    

    Credits

    Based on the pysqlite3 project. Available under the Zlib license.

    Support

    The package is provided as-is, and I don't currently plan to change anything except to update the SQLite version from time to time.