Это сценарий:
Я использую Python 3 (от 3,6 до 3,8 на Windows 10, используя Pipenv и vanilla Python), чтобы создать файл SQLite с поддержкой Spatial и несколькими триггерами на основе пространственных индексов.
Создание базы данных и добавление записей прекрасно работает после загрузки Spatialite
conn.enable_load_extension(True)
conn.load_extension("mod_spatialite")
Однако добавление пространственных ссылок с кодом, например ниже
SELECT CreateSpatialIndex( 'nodes' , 'geometry' );"""
возвращает следующую ошибку
updateTableTriggers: «нет такого модуля: rtree»
Я попытался скомпилировать расширение rtree, следуя некоторым рекомендациям Компиляция SQLite RTREE в MSV C? и использование VS 2016 (16.4.2).
Но я получаю всевозможные ошибки при попытке загрузить это в SQL (возможно, не компилируется должным образом, но я пытался несколько вещей и ничего не получалось). Моей лучшей попыткой была успешная компиляция с использованием в значительной степени инструкций, которые я упоминал выше, но когда я попытался
p.conn.load_extension("libSqliteRtree.dll")
, я получил
sqlite3.OperationalError: Указанная процедура не смогла быть найденным.
Я действительно в растерянности, так как, кажется, очень мало дискуссий по этой теме c везде, где я смотрел. Несколько вопросов, которые приходят на ум:
Определенные c инструкции по компиляции / хитрости / версии компилятора, которые я должен использовать?
Можно ли даже скомпилировать и загрузить rtree в Python 3 с использованием стандартной библиотеки sqlite3?
Это относится к Windows?
Существуют ли альтернативные пакеты SQLite Python, которые могут выполнить эту работу (я не нашел ни одного в PyPI)?
Однако важно, чтобы решение работало на разных платформах.