NOTICE: Official sqlcipher3 has merged some changes from this fork since 0.6.2 to provide wheels for x86, x64, arm64 Windows, MacOS and Linux. This fork is kept for providing unofficial wheels for platforms like ppc64le and s390x,
NOTICE: This is a fork of sqlcipher3
which adds github action for creating wheels for Windows, MacOS and Linux.
The unofficial wheels from this fork are uploaded to sqlcipher3-wheels on pypi,
while the official wheels are sqlcipher3-binary.
To install openssl easily, conan is used. I made some reference with
this fork of pysqlite3 by Dobatymo
NOTICE: To build from this fork, copy sqlite3.c and sqlite3.h
to src/sqlcipher, then run pip wheel . or python -m build .
NOTICE: The wheels are built with sqlcipher version 4. You have to execute
PRAGMA cipher_compatibility = 3 before doing any operations on a database
encrypted with SQLCipher version 3 when a newer version is installed.
Keep in mind, you have to add PRAGMA cipher_compatibility after PRAGMA key:
from sqlcipher3 import dbapi2 as sqlite
conn = sqlite.connect('test.db')
c = conn.cursor()
c.execute("PRAGMA key='password'")
c.execute("PRAGMA cipher_compatibility = 3")
c.execute('''create table stocks (date text, trans text, symbol text, qty real, price real)''')
c.execute("""insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)""")
conn.commit()
c.close()This library takes pysqlite3 and makes some small modifications so it is suitable for use with sqlcipher (sqlite with encryption).
Additional features:
- User-defined window functions (requires SQLite >= 3.25)
- Flags and VFS an be specified when opening connection
- Incremental BLOB I/O, bpo-24905
- Improved error messages, bpo-16379
- Simplified detection of DML statements via
sqlite3_stmt_readonly. - Sqlite native backup API (also present in standard library 3.7 and newer).
A completely self-contained binary package (wheel) is available for versions
0.4.0 and newer as sqlcipher3-binary. This package contains the latest
release of sqlcipher compiled with numerous extensions, and requires no
external dependencies.
To build sqlcipher3 linked against the system SQLCipher, run:
$ python setup.py build
To build sqlcipher3 statically-linked against a particular version of
SQLCipher, you need to obtain the SQLCipher source code and copy sqlite3.c
and sqlite3.h into the source tree.
# Download the latest version of SQLCipher source code and build the source
# amalgamation files (sqlite3.c and sqlite3.h).
$ git clone https://github.com/sqlcipher/sqlcipher
$ cd sqlcipher/
$ ./configure
$ make sqlite3.c
# Copy the sqlcipher amalgamation files into the root of the sqlcipher3
# checkout and run build_static + build:
$ cp sqlcipher/sqlite3.[ch] sqlcipher3/
$ cd sqlcipher3
$ python setup.py build_static build
You now have a statically-linked, completely self-contained sqlcipher3.
A binary package (wheel) is available for linux with a completely
self-contained sqlcipher3, statically-linked against the most recent release
of sqlcipher.
$ pip install sqlcipher3-binary