Python 3.x 在Ubuntu 16.04上,我如何将FTS5扩展与sqlite3 python模块和python 3.7一起使用?
为了测试带有sqlite3 Python模块的FTS5扩展是否有效,我使用以下方法: 该代码在Ubuntu 18.04和Ubuntu 19.04上运行良好。例如,可以使用以下Python 3.7解释器通过Docker运行它:Python 3.x 在Ubuntu 16.04上,我如何将FTS5扩展与sqlite3 python模块和python 3.7一起使用?,python-3.x,sqlite,ubuntu-16.04,fts5,Python 3.x,Sqlite,Ubuntu 16.04,Fts5,为了测试带有sqlite3 Python模块的FTS5扩展是否有效,我使用以下方法: 该代码在Ubuntu 18.04和Ubuntu 19.04上运行良好。例如,可以使用以下Python 3.7解释器通过Docker运行它: docker pull ubuntu:18.04 # This line is optional. docker run --interactive --tty ubuntu:18.04 bash apt update apt install -y software-pro
docker pull ubuntu:18.04 # This line is optional.
docker run --interactive --tty ubuntu:18.04 bash
apt update
apt install -y software-properties-common
add-apt-repository -y ppa:deadsnakes/ppa
apt update
apt install -y python3.7
python3.7
# use here the python code given above
但是,如果我将Ubuntu版本从18.04更改为16.04,则FTS5扩展不起作用:
docker pull ubuntu:16.04 # This line is optional.
docker run --interactive --tty ubuntu:16.04 bash
apt update
apt install -y software-properties-common
add-apt-repository -y ppa:deadsnakes/ppa
apt update
apt install -y python3.7
python3.7
# use here the python code given above
python代码将崩溃:
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> conn.execute("""create virtual table fts5test using fts5 (data);""")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
sqlite3.OperationalError: no such module: fts5
linux上的[GCC 5.4.0 20160609]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入sqlite3
>>>conn=sqlite3.connect(“:内存:”)
>>>conn.execute(“”“使用fts5(数据)创建虚拟表fts5测试;”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
sqlite3.1错误:没有此类模块:fts5
在Ubuntu16.04上,如何将FTS5扩展与sqlite3 Python模块和Python 3.7一起使用?这两篇文章(和)可以解决这个问题
尝试以下步骤:
$ wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
$ tar xvzf sqlite-autoconf-3310100.tar.gz
$ cd sqlite-autoconf-3310100
$ CFLAGS="-DSQLITE_ENABLE_FTS5" ./configure
$ make sqlite3.c
$ source <path to Python3.7 virtual environment>/bin/activate
(python37env) $
$ source <path to Python3.7 virtual environment>/bin/activate
(python37env) $
(python37env) $ wget https://github.com/coleifer/pysqlite3/archive/0.4.2.tar.gz
(python37env) $ tar xvzf 0.4.2.tar.gz
(python37env) $ cd pysqlite3-0.4.2
(python37env) $ cp <path to sqlite-autoconf-3310100>/sqlite3.h .
(python37env) $ cp <path to sqlite-autoconf-3310100>/sqlite3.c .
(python37env) $ python setup.py build_static build
(python37env) $ python setup.py install
# import sqlite3
from pysqlite3 import dbapi2 as sqlite3
conn = sqlite3.connect(':memory:')
conn.execute("""create virtual table fts5test using fts5 (data);""")
conn.execute("""insert into fts5test (data)
values ('this is a test of full-text search');""")
conn.execute("""select * from fts5test where data match 'full';""").fetchall()