在 Python 3 中使用 SQLite 的 FTS3/4

Posted

技术标签:

【中文标题】在 Python 3 中使用 SQLite 的 FTS3/4【英文标题】:Using SQLite's FTS3/4 with Python 3 【发布时间】:2015-05-05 17:56:29 【问题描述】:

我一直在使用 python 的 Flask 框架开发 peewee 的示例博客应用程序。 (见https://github.com/coleifer/peewee,里面的例子>博客)。

我已经安装了所有要求,但是当我尝试运行该应用程序时,我不断得到

no such module : FTS4

错误。

您认为我为什么会收到此错误? 这是否意味着标准的 Python3 sqlite3 模块没有 FTS 模块?

如果是这样,有没有办法为 Python 3.4 启用(安装)FTS3/FTS4 模块?

【问题讨论】:

【参考方案1】:

你可以打开一个 sqlite shell 并运行pragma compile_options 来查看你的 SQLite 有什么。 AFAIK 这与 Python3 无关。

这是我的:

sqlite> pragma compile_options;
ENABLE_COLUMN_METADATA
ENABLE_FTS3
ENABLE_RTREE
ENABLE_UNLOCK_NOTIFY
SECURE_DELETE
SYSTEM_MALLOC
THREADSAFE=1

如果你发现你没有 FTS 扩展,你可能需要重新编译 SQLite。另请查看文档:

http://sqlite.org/fts3.html

【讨论】:

感谢您的回答。我下载了 sqlite3 shell.exe 并检查了选项。我启用了 FTS3。 我只是不明白问题出在哪里。 你在shell中运行的sqlite和你在Python中找到的sqlite不一样; Python 包含自己的 DLL,默认情况下,Windows 上不包括 fts3 或 fts4,至少从 Python 2.7.11 开始。 我不认为你是正确的。 Python 动态链接您已安装的 SQLite 库。

以上是关于在 Python 3 中使用 SQLite 的 FTS3/4的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 Python 3.7 的 sqlite3 python 模块的 FTS5 扩展?

在 Python 3 中使用 SQLite 的 FTS3/4

Python - 通过传递多个参数从 sqlite 表中选择

electron引入Sqlite3重新编译的问题

python-sqlite3事务

我可以在 python 中使用更高版本的 sqlite3 吗?