【发布时间】:2021-04-01 22:04:40
【问题描述】:
在value 列上创建索引时:
import sqlite3
db = sqlite3.connect(':memory:')
db.execute("CREATE TABLE data(id INTEGER PRIMARY KEY, value TEXT);")
db.execute("CREATE INDEX data_idx ON data(value);")
for v in ["xyz", "abc", "def", "abc", "ijk"]:
db.execute("INSERT INTO data(value) VALUES (?)", (v,))
如何显示索引的内部内容?出于学习目的,以及在更复杂的情况下,查看索引中准确存储的内容会很有帮助。
由于data_idx 不是真正的表,因此no such table: data_idx 失败:
db.execute("SELECT * FROM data_idx")
如何显示一个Sqlite索引的内部内容? (我猜它应该是排序值和rowids 之间的对应关系?)
【问题讨论】:
-
也许首先阅读SQLITE_MASTER 以检测索引中有哪些字段,然后计算第二个查询以收集结果?
-
@tgrandje
"SELECT * FROM sqlite_master WHERE type = 'index';"给出了('index', 'data_idx', 'data', 3, 'CREATE INDEX data_idx ON data(value)'),但是我想看看索引里面的内部内容:项目应该是排序的,看看匹配的rowids 等等。
标签: python database sqlite indexing