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