【发布时间】:2020-03-29 22:50:25
【问题描述】:
在查看了一些与 SQlite3 相关的帖子以及如何启用扩展后,我发现自己无法满足我的需求,并且绝望地在这里问你们。
我在特定的 pipenv 环境中使用 Python 3.7(我认为那些是 venv 环境)。环境中的 Python 路径是: /home/my_user/.local/share/virtualenvs/my_current_env/lib/python3.7
代码:
with sqlite3.connect(":memory:") as conn:
conn.enable_load_extension(True)
conn.load_extension("mod_spatialite.so")
错误:
AttributeError: 'sqlite3.Connection' 对象没有属性 'enable_load_extension'
到目前为止我尝试过的解决方案:
(i) 转到 Py37 主安装并更改 setup.py 并替换: 用于 SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 的 SQLITE_OMIT_LOAD_EXTENSION 我在 pipenv 环境 Python 路径中找不到 setup.py 文件... 没用
(ii) 尝试生成 SQlite 的游标并从游标中执行扩展:
cursor=conn.cursor()
res=cursor.execute("SELECT sqlite_compileoption_used('ENABLE_LOAD_EXTENSION');", "mod_spatialite.so")
res.fetchall()
也没有用: 错误:
ProgrammingError:提供的绑定数量不正确。当前语句使用 0,提供了 17 个。
我是 SQlite 的新手,并且在 Python 中非常糟糕,我的目标是使用 Spatialite 激活数据库。非常感谢您的帮助。
身体健康,万事如意, 朱埃旺特
【问题讨论】:
标签: python python-3.x sqlite pipenv spatialite