修改 我有一个python应用程序,在数据库中创建一个表。 它会创建一个随机数量的行。我不知道表中创建的行数。每行对应于我的图片的元数据,在下面的示例中,只创建了6行:
我想使用FTS4全文搜索功能来解析关键词的列。
到目前为止,我知道我需要创建一个虚拟表并将原始表中的所有内容导入到虚拟表中。使用this SO线程我理解我需要做:INSERT INTO bar SELECT * FROM other_table
。
那么,创建Virtual one并将CONTENTSEARCHINDEX表中的内容导入CONTENTSEARCHINDEXvirt虚拟表的语法是什么:
conn.execute('''CREATE VIRTUAL TABLE IF NOT EXISTS CONTENTSEARCHINDEXvirt USING FTS4;''')
conn.execute("INSERT INTO CONTENTSEARCHINDEXvirt SELECT * FROM CONTENTSEARCHINDEX")
我收到了这个错误:
sqlite3.OperationalError: table CONTENTSEARCHINDEXvirt has 1 columns but 7 values were supplied
正如CL所说,这种语法试图将这个随机数列导入到默认列中。
那么最好的方法是什么?
我可以使用以下命令获取列表my -unknown-:
# Listing the number of columns from initial DB as a list.
connection = sqlite3.connect(DBtoReadAndParse)
cursor = connection.execute('select * from CONTENTSEARCHINDEX;')
namescolumns = list(map(lambda x: x[0], cursor.description))
答案 0 :(得分:0)
SQLite文档记录了如何创建FTS表:CREATE VIRTUAL TABLE,Creating and Destroying FTS Tables。
虚拟表应包含要在其中进行全文搜索的列。要创建它,请构造一个形式为
的字符串CREATE VIRTAL TABLE name USING FTS4(key, metadata_0, and_so_on)