Python 处理字符串时插入和更新集合问题
我有这个问题已经有一段时间了,下面是一个小故事: 我想用Python 处理字符串时插入和更新集合问题,python,python-3.x,sqlite,python-3.5,Python,Python 3.x,Sqlite,Python 3.5,我有这个问题已经有一段时间了,下面是一个小故事: 我想用Python脚本在我的Sqlite数据库中编辑一个日期,所以我使用以下方法来完成此操作: import sqlite3 db = sqlite3.connect('test.db') cursor = db.cursor() cursor.execute("UPDATE info SET date = '2003-03-14 12:34:20' WHERE id = 10") 但当我执行此操作时,会出现一个异常: sqlite3.Oper
Python
脚本在我的Sqlite
数据库中编辑一个日期,所以我使用以下方法来完成此操作:
import sqlite3
db = sqlite3.connect('test.db')
cursor = db.cursor()
cursor.execute("UPDATE info SET date = '2003-03-14 12:34:20' WHERE id = 10")
但当我执行此操作时,会出现一个异常:
sqlite3.OperationalError: no such module: fts4
通过一些故障排除,我成功地将问题缩小到引号的问题。因为即使我把它减少到一年,它仍然会产生一个异常
如果尝试使用引号插入字符串,则会出现相同的异常
我怎样才能解决这个问题?我找到的大多数解决方案都是通过在构建时使用SQLITE\u ENABLE\u fts3
标志启用fts3/fts4
来解决的,但我不知道如何做到这一点
此外,完全相同的代码在python3.6.5
和2.7.12
中都能顺利运行。在Python3
?,或者更具体地说3.5.2
中发生了什么
我应该补充一点,它可以在linux中工作,但不能在windows中工作。FTS3/FTS4扩展支持全文搜索,因此您的
info
表可能是一个虚拟FTS表,需要FTS4引擎工作,而Python的SQLite二进制文件不包括它。您无法解决此问题(除了将其转换为常规表之外),因此您需要更新Python或至少其链接的SQLite二进制文件(例如,当涉及Windows时,匹配您的版本并替换%PYTHONHOME%\DLLs
文件夹中的sqlite3.dll
),它在Windows上的3.6.5中工作。我可以将SQLite3 DLL从3.6.5复制到3.5.2吗?如果两个CPython版本都是为相同的体系结构(即32位/64位)编译的,可能会这样。