这是场景:
我正在使用Python 3(在Windows 10上使用Pipenv和vanilla Python的3.6到3.8版本)创建一个具有空间支持和基于空间索引的多个触发器的SQLite文件。
在加载Spatialite后,创建数据库并添加记录很顺利。
然而,使用以下代码添加空间链接
我正在使用Python 3(在Windows 10上使用Pipenv和vanilla Python的3.6到3.8版本)创建一个具有空间支持和基于空间索引的多个触发器的SQLite文件。
在加载Spatialite后,创建数据库并添加记录很顺利。
conn.enable_load_extension(True)
conn.load_extension("mod_spatialite")
然而,使用以下代码添加空间链接
SELECT CreateSpatialIndex( 'nodes' , 'geometry' );"""
返回以下错误:
updateTableTriggers: "no such module: rtree"
我尝试按照Compiling SQLite RTREE in MSVC?中的建议编译rtree扩展程序,并使用VS 2016 (16.4.2)。但是,在尝试在SQL中加载时,我遇到了各种各样的错误(可能没有正确编译它,但我尝试了多种方法,都没有成功)。我最好的尝试是使用几乎与上面提到的指令相同的成功编译,但是当我尝试...
p.conn.load_extension("libSqliteRtree.dll")
我遇到了一个问题:
sqlite3.OperationalError: 找不到指定的过程。
我十分疑惑,因为无论我去哪里查找,好像都很少有人讨论这个话题。我脑海中浮现出几个问题:
是否应该使用特定的编译说明/技巧/编译器版本?
是否可以使用标准sqlite3库在Python 3中编译和载入rtree?
这个问题只有在Windows系统下才会出现吗?
是否有其他SQLite Python包可用于此项工作(我没有在PyPI上找到)?
然而,解决方案关键在于它能够适用于不同平台。