Python和SQLite3, 检查我是否可以使用fts5扩展?

2024-09-24 02:14:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近发现FTS5扩展已经发布。
检查我的应用程序是否可以在用户系统上使用它的最佳方法是什么?
只需python3版本检查,或sqlite3.sqlite_版本检查根据release page??还是别的什么?在


Tags: 方法用户版本应用程序sqliterelease系统page
2条回答

您链接到的文档提到FTS5在默认情况下是禁用的。编译SQLite时启用了吗?在

一种快速了解的方法是使用^{} ORM

from playhouse.sqlite_ext import FTS5Model
FTS5Model.fts5_installed()

如果您可以使用FTS5,上面的将返回True。您可以使用pip install peewee安装peewee。在

您还可以使用apsw包装器,它includes FTS5 by default since version 3.11.0-r1。请参阅build instructions并使用 enable-all-extensions标志。apsw包装使用amalgamation。在

编辑: 下面是来自^{} source的代码,演示了如何做到这一点:

^{pr2}$

/这是之前编辑的专栏文章,但我把它移到了这里以保持问题的清晰

所以这感觉好像可以用,在问题here中找到了

import sqlite3

con = sqlite3.connect(':memory:')
cur = con.cursor()
cur.execute('pragma compile_options;')
available_pragmas = cur.fetchall()
con.close()

print(available_pragmas)

if ('ENABLE_FTS5',) in available_pragmas:
    print('YES')
else:
    print('NO')

但奇怪的是,我在几个虚拟机上运行它,没有一个虚拟机启用了fts4,但我却乐此不疲地使用它。。。也许它的fts3/fts4相当相同,或者可能就是完全错了。在

/编辑
从文档中

Note that enabling FTS3 also makes FTS4 available. There is not a separate SQLITE_ENABLE_FTS4 compile-time option. A build of SQLite either supports both FTS3 and FTS4 or it supports neither.

相关问题 更多 >