apsw.SQLError: SQLError: нет таких vfs: zipvfs при попытке прочитать зашифрованные файлы SQLite в Windows с помощью Python и apsw
У меня есть код, который работает под 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 ответ
(Раскрытие информации: я автор APSW)
ZipVFS — это программное обеспечение, лицензируемое отдельно .Вот почему APSW не может загрузить и включить его, когда вы запросили загрузку всего и включили все расширения. Насколько я могу судитьzlibwapi.dll
представляет собой только процедуры сжатия и не включает код zipvfs.
Вам нужно будет сделать в Windows то же, что вы делали в Linux, чтобы включить код zipvfs. Как минимум, что должно сработать, так это создать каталог, в котором находится исходный код APSW, и в немsqlite3
место в каталогеsqlite3-zipvfs.c
названныйsqlite3.c
. Затем запустите свойsetup.py
еще раз, но исключите бит выборки. В первых нескольких строках вывода вы увидите что-то подобное, в зависимости от каталога, в котором вы находитесь.
SQLite: Using amalgamation C:\projects\apsw\sqlite3\sqlite3.c