【发布时间】:2019-02-24 06:07:46
【问题描述】:
如何正确地将 sqlite 扩展加载到 python sqlite 导入中?
操作系统:Windows 7 64 位
sqlite3 版本:3.14.1 64bit
python3版本:3.5.2 64bit
到目前为止,这是我的过程: 使用以下命令将 extension-functions.c 编译为 libsqlitefunctions.dll:
gcc -shared -I "C:\Software\sqlite3\sqlite-master" -o libsqlitefunctions.dll extension-functions.c
然后我就可以在 sqlite3 命令行中愉快地使用这些函数了:
SELECT load_extension('libsqlitefunctions.dll');
但是在 python 脚本中尝试时:
import sqlite3 as lite
con = lite.connect(db_file)
con.enable_load_extension(True)
con.load_extension("<<path to file>>\\libsqlitefunctions.dll")
出现这个错误:
错误 找不到指定的模块。 :
extension-functions.c 文件确实包含 COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE 部分,实际上它在使用命令行 sqlite3 时可以正常加载
补充说明:
python sqlite 包已安装并正常工作。
我也尝试将 python 路径中的 sqlite3.dll 更新到最新版本
【问题讨论】:
-
检查你是否安装了
sqlite3包。或者在你的windows命令提示符中使用pip install sqlite3来安装它,然后再次尝试运行代码。 -
@Arihant 是的,它已安装。所有其他命令都可以工作,只是加载扩展时出现问题。
-
完整的
<<path to file>>是什么? -
@Shawn - 许多不同的路径。我已经尝试了所有可能的方法,包括在 python3 PATH 和 sqlite3 PATH 中使用 dll,并且只将 dll 名称放在调用中。但是,例如,我会使用这样的东西:“C:\\temp\\libsqlitefunctions.dll”
标签: python python-3.x sqlite