gpt4 book ai didi

python - 正确安装支持 FTS5 的 sqlite3

转载 作者:太空狗 更新时间:2023-10-29 11:07:01 40 4
gpt4 key购买 nike

我正在开发一个 Python 工具,它使用带 FTS5 的 sqlite3 虚拟表(全文搜索)。我想知道如何从 tarball(或任何其他方式)正确安装我的工具工作所需的要求,以便我可以打包它们以实现可移植性。

目前,我成功安装了 latest release tarball of sqlite .但是,当我执行时:

python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
# or
python2 -c "import sqlite3; print(sqlite3.sqlite_version)"

我得到 3.11.0,而 sqlite3 --version 返回:3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1

系统版本sqlite3 3.22确实支持FTS5,我做pragma compile_options;得到:

COMPILER=gcc-5.4.0 20160609
ENABLE_DBSTAT_VTAB
ENABLE_FTS4
**ENABLE_FTS5**
ENABLE_JSON1
ENABLE_RTREE
ENABLE_STMTVTAB
ENABLE_UNKNOWN_SQL_FUNCTION
HAVE_ISNAN
THREADSAFE=1

但是,python 版本,使用 this script返回这个:

[(u'ENABLE_COLUMN_METADATA',), (u'ENABLE_DBSTAT_VTAB',), (u'ENABLE_FTS3',), (u'ENABLE_FTS3_PARENTHESIS',), (u'ENABLE_JSON1',), (u'ENABLE_LOAD_EXTENSION',), (u'ENABLE_RTREE',), (u'ENABLE_UNLOCK_NOTIFY',), (u'ENABLE_UPDATE_DELETE_LIMIT',), (u'HAVE_ISNAN',), (u'LIKE_DOESNT_MATCH_BLOBS',), (u'MAX_SCHEMA_RETRY=25',), (u'OMIT_LOOKASIDE',), (u'SECURE_DELETE',), (u'SOUNDEX',), (u'SYSTEM_MALLOC',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]

因此,我的问题是:

  1. 有什么方法可以为我的应用制作一个 Linux 可移植包在 python 和 linux 系统中都支持 sqlite3 FTS5?
  2. 有什么方法可以将 python 模块 sqlite3 链接到特定的 sqlite3 路径?

我在 Ubuntu 16.04 LTS 上尝试了所有这些,但我想在 CentOS 7 上也能正常工作。

非常感谢您。

有关我从 tarball 安装的更多详细信息:

wget "https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release" -O sqlite.tar.gz
tar -xzvf sqlite.tar.gz
cd sqlite
./configure --enable-fts5
make
sudo make install

最佳答案

最简单的方法是使用 apsw (另一个 Python SQLite 包装器)。它的 API 与 sqlite3 略有不同,你不能直接 pip-install 它(除非你对过时的版本没问题),但其余的都很好,你可以拥有最新的功能SQLite 的。

wget https://github.com/rogerbinns/apsw/releases/download/3.22.0-r1/apsw-3.22.0-r1.zip
unzip apsw-3.22.0-r1.zip
cd apsw-3.22.0-r1
python setup.py fetch --sqlite build --enable-all-extensions install

然后,

import apsw

apsw.Connection(':memory:').cursor().execute('pragma compile_options').fetchall()

返回:

[('COMPILER=gcc-5.4.0 20160609',),
('ENABLE_API_ARMOR',),
('ENABLE_FTS3',),
('ENABLE_FTS3_PARENTHESIS',),
('ENABLE_FTS4',),
('ENABLE_FTS5',),
('ENABLE_ICU',),
('ENABLE_JSON1',),
('ENABLE_RBU',),
('ENABLE_RTREE',),
('ENABLE_STAT4',),
('THREADSAFE=1',)]

困难的方法是使用自定义 SQLite 编译 Python。更多详细信息,请参阅 this article by Charles Leifer .

关于python - 正确安装支持 FTS5 的 sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053285/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com