I have a code that works under linux and I am trying to port it to windows. It uses apsw to work with encrypted SQLite files.
flags = apsw.SQLITE_OPEN_READWRITE | apsw.SQLITE_OPEN_CREATE | apsw.SQLITE_OPEN_URI
connection_string = (
"file:{filepath}?zv=zlib&level=9&vfs=zipvfs&password256={password}".format(
filepath=filepath, password=password
)
)
connection = apsw.Connection(connection_string, flags=flags)
when I try to run it under windows, it throws this error:
apsw.SQLError: SQLError: no such vfs: zipvfs
I have downloaded zlibwapi.dll and put it under System32, I have also tried building apsw from source
python setup.py fetch --all build --enable-all-extensions install
but I am still getting the error. (tried in python 3.10 and 3.11)
(Disclosure: I am the APSW author)
ZipVFS is a separately licensed piece of software. That is why APSW can't download and include it when you requested everything to be fetched and all extensions enabled. As far as I can tell
zlibwapi.dllis the compression routines only, and doesn't include the zipvfs code.You will need to do under Windows what you did under Linux to get zipvfs code included. At a minimum what should work is to create a
sqlite3directory where you have the APSW source, and in thatsqlite3directory placesqlite3-zipvfs.cnamedsqlite3.c. Then run yoursetup.pyline again, but exclude the fetch bit. In the first few lines of output you will see something like this differing by the directory you are in.