在Windows 64位Python上加载SQLite扩展失败

时间:2014-05-02 00:29:30

标签: python windows sqlite

我正在编写一个在Windows 8.1 Pro 64位上使用sqlite3模块的Python程序。

当我尝试加载sqlite扩展时,会引发sqlite3.OperationalError(无法找到指定的过程)。

Python版本为3.3.5 for Windows 64bit,来自www.python.org。

因为我认为当得到的DLL与Python 3.3.x一起使用时,sqlite3.dll应该更好地与msvcr100.dll链接而不是MinGW默认的msvcrt.dll,我制作了一个spec文件来链接msvcr100dll,并构建了sqlite3。使用devkit MinGW 64bit的dll和sqlite3.exe如下。

的devkit-mingw64-64-4.7.2-20130224-1432-sfx.exe

http://rubyinstaller.org/downloads/

SQLite源是sqlite-amalgamation-3080403.zip

http://www.sqlite.org/download.html

x86_64-w64-mingw32-gcc -dumpspecs | sed "s/-lmsvcrt/-lmsvcr100/" > msvcr100.spec

x86_64-w64-mingw32-gcc -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -O2 -shared -o sqlite3.dll -Wl,--out-implib=libsqlite3.dll.a -specs=msvcr100.spec sqlite3.c

x86_64-w64-mingw32-gcc -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -O2 -o sqlite3.exe -specs=msvcr100.spec shell.c libsqlite3.dll.a

在example.py中:

import sqlite3

con = sqlite3.connect(":memory:")

# enable extension loading
con.enable_load_extension(True)

# Load the fulltext search extension
con.load_extension("./sqlite3.dll")

python example.py

Traceback (most recent call last):
  File "example.py", line 23, in <module>
    con.load_extension("./sqlite3.dll")
sqlite3.OperationalError: 指定されたプロシージャが見つかりません。

最后一条日语消息表示找不到指定的程序。

修改

我发现用新构建的sqlite3.dll替换Python附带的原始sqlite3.dll(在Python33 \ DLLs中)就足够了。

您不需要执行enable_load_extension()或load_extension()。

你可以马上做这样的事情。

con.execute("create virtual table recipe using fts3(name, ingredients)")

0 个答案:

没有答案