Как использовать расширение FTS5
с модулем sqlite3
python с Python 3.7?
Я попытался запустить следующий код в 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 (по умолчанию, De c 19 2019, 23:49:42) и Python 3.6.7 (по умолчанию, 25 октября) 2018, 09:16:13).