如何在Python 3.7 中使用带有 python 模块的FTS5
扩展?sqlite3
我尝试在 Python 中运行以下代码python testFTS5.py
:
import sqlite3
conn = sqlite.connect('some_db.db')
sqlite.enable_load_extension(True)
sqlite.load_extension('fts5')
这导致错误消息:
Traceback (most recent call last):
File "./src/test.py", line 3, in <module>
sqlite.enable_load_extension(True)
AttributeError: module 'sqlite3' has no attribute 'enable_load_extension'
我尝试过sqlite.load_extension('FTS5')
,sqlite.load_extension('ENABLE_FTS5')
但不出所料地产生了相同的错误消息(未找到相应的文件名)。我也尝试过运行代码,LD_LIBRARY_PATH=/usr/local/bin python testFTS5.py
但我得到了相同的错误消息。
我sqlite3
通过在终端中运行以下代码来检查位置:
derno@ompn:/mnt/ilcompn0d1/user/dernonco/fts-test$ which sqlite3
/usr/local/bin/sqlite3
我列出了已安装的sqlite3
扩展:
derno@ompn:/mnt/ilcompn0d1/user/dernonco/fts-test$ sqlite3
SQLite version 3.18.0 2017-03-28 18:48:43
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> pragma compile_options;
COMPILER=gcc-5.4.0 20160609
DEFAULT_SYNCHRONOUS=2
DEFAULT_WAL_SYNCHRONOUS=2
ENABLE_FTS5
ENABLE_RTREE
SYSTEM_MALLOC
THREADSAFE=1
这似乎表明 FTS5 在我的/usr/local/bin/sqlite3
版本中可用。
但是,当我跑步时
import sqlite3
con = sqlite3.connect(':memory:')
cur = con.cursor()
cur.execute('pragma compile_options;')
available_pragmas = cur.fetchall()
con.close()
print(available_pragmas)
它输出:
[('COMPILER=gcc-5.4.0 20160609',), ('DEFAULT_SYNCHRONOUS=2',), ('DEFAULT_WAL_SYNCHRONOUS=2',),
('ENABLE_FTS3',), ('ENABLE_RTREE',), ('SYSTEM_MALLOC',), ('THREADSAFE=1',)]
该列表中没有ENABLE_FTS5
。
我尝试使用 Python 3.7.6(默认,2019 年 12 月 19 日,23:49:42)和 Python 3.6.7(默认,2018 年 10 月 25 日,09:16:13)。