mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-23 01:14:31 +02:00
table.xindexes property plus improved introspection documentation, closes #261
This commit is contained in:
parent
2dad4f583c
commit
9c67cb9252
3 changed files with 148 additions and 6 deletions
|
|
@ -68,6 +68,10 @@ ForeignKey = namedtuple(
|
|||
"ForeignKey", ("table", "column", "other_table", "other_column")
|
||||
)
|
||||
Index = namedtuple("Index", ("seq", "name", "unique", "origin", "partial", "columns"))
|
||||
XIndex = namedtuple("XIndex", ("name", "columns"))
|
||||
XIndexColumn = namedtuple(
|
||||
"XIndexColumn", ("seqno", "cid", "name", "desc", "coll", "key")
|
||||
)
|
||||
Trigger = namedtuple("Trigger", ("name", "table", "sql"))
|
||||
|
||||
|
||||
|
|
@ -863,6 +867,24 @@ class Table(Queryable):
|
|||
indexes.append(Index(**row))
|
||||
return indexes
|
||||
|
||||
@property
|
||||
def xindexes(self):
|
||||
sql = 'PRAGMA index_list("{}")'.format(self.name)
|
||||
indexes = []
|
||||
for row in self.db.execute_returning_dicts(sql):
|
||||
index_name = row["name"]
|
||||
index_name_quoted = (
|
||||
'"{}"'.format(index_name)
|
||||
if not index_name.startswith('"')
|
||||
else index_name
|
||||
)
|
||||
column_sql = "PRAGMA index_xinfo({})".format(index_name_quoted)
|
||||
index_columns = []
|
||||
for info in self.db.execute(column_sql).fetchall():
|
||||
index_columns.append(XIndexColumn(*info))
|
||||
indexes.append(XIndex(index_name, index_columns))
|
||||
return indexes
|
||||
|
||||
@property
|
||||
def triggers(self):
|
||||
return [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue