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
Другие вопросы по тегам