【发布时间】:2017-05-31 15:41:33
【问题描述】:
编辑: 我有一个在数据库中创建表的 python 应用程序。 它创建随机数量的行。我不知道在表中创建的确切行数。每行对应我的图片的元数据,在下面的例子中,只创建了6行:
我想使用 FTS4 全文搜索功能来解析列中的关键字。
到目前为止,我知道我需要创建一个虚拟表并将原始表中的所有内容导入到虚拟表中。使用this SO 线程我知道我需要这样做:INSERT INTO bar SELECT * FROM other_table。
那么,创建虚拟表并将内容从 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 所说,这个语法试图将这个随机数的列导入到创建的默认列中。
那么最好的方法是什么?
我可以使用以下方法获取我的 -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))
【问题讨论】:
-
您真的要索引所有 21 列吗?以及数据库应该如何知道你想要多少列?
-
@CL:这就是我提问的目的。我是 SQLite(和 DB)的新手。所以我必须指定要在我的虚拟表中创建的列数?如果是,语法是什么? - 因为我不知道我的脚本将创建的列数,因为我最初不知道我的学生的所有特征。
-
你不知道你的表有哪些列吗?
-
没有。应用程序动态创建 Db 并在之后将其删除。从一个 Api 调用到另一个,此 App 每次调用都会创建不同数量的列。
-
您是在问如何找出一个表有哪些列,或者如何创建一个 FTS 表?
标签: database sqlite database-design