apsw.SQLError:SQL错误:没有这样的vfs:zipvfs在Windows上使用python和apsw读取加密的SQLite文件时

pdkcd3nj  于 2023-10-23  发布在  SQLite
关注(0)|答案(1)|浏览(130)

我有一个在Linux下工作的代码,我正试图将其移植到Windows。它使用apsw来处理加密的SQLite文件。

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)

当我尝试在Windows下运行它时,它会抛出这个错误:

apsw.SQLError: SQLError: no such vfs: zipvfs

我已经下载了zlibwapi.dll并将其放在System32下,我还尝试从源代码构建apsw

python setup.py fetch --all build --enable-all-extensions install

但我还是得到了错误(在Python 3.10和3.11中尝试)

a1o7rhls

a1o7rhls1#

(披露:我是APSW作者)
ZipVFS是一个separately licensed的软件。这就是为什么APSW不能下载和包括它时,你要求一切都被提取和所有扩展启用。据我所知,zlibwapi.dll只是压缩例程,不包括zipvfs代码。
您需要在Windows下执行在Linux下执行的操作来包含zipvfs代码。至少应该创建一个sqlite3目录,其中包含APSW源代码,并在该sqlite3目录中放置名为sqlite3.csqlite3-zipvfs.c。然后再次运行setup.py行,但排除fetch位。在输出的前几行中,您将看到类似这样的内容,这些内容因您所在的目录而有所不同。

SQLite: Using amalgamation C:\projects\apsw\sqlite3\sqlite3.c

相关问题