mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-24 18:04:32 +02:00
.indexes property for introspecting indexes
This commit is contained in:
parent
e04f509c51
commit
c611ed80d2
3 changed files with 46 additions and 1 deletions
|
|
@ -8,6 +8,7 @@ Column = namedtuple(
|
|||
ForeignKey = namedtuple(
|
||||
"ForeignKey", ("table", "column", "other_table", "other_column")
|
||||
)
|
||||
Index = namedtuple("Index", ("seq", "name", "unique", "origin", "partial", "columns"))
|
||||
|
||||
|
||||
class Database:
|
||||
|
|
@ -122,6 +123,18 @@ class Table:
|
|||
"select sql from sqlite_master where name = ?", (self.name,)
|
||||
).fetchone()[0]
|
||||
|
||||
@property
|
||||
def indexes(self):
|
||||
sql = "select * from pragma_index_list(?)"
|
||||
indexes = []
|
||||
for row in list(self.db.conn.execute(sql, (self.name,)).fetchall()):
|
||||
column_sql = "select name from pragma_index_info(?) order by seqno"
|
||||
columns = [
|
||||
r[0] for r in self.db.conn.execute(column_sql, (row[1],)).fetchall()
|
||||
]
|
||||
indexes.append(Index(*(row + (columns,))))
|
||||
return indexes
|
||||
|
||||
def create(self, columns, pk=None, foreign_keys=None):
|
||||
columns = {name: value for (name, value) in columns.items()}
|
||||
self.db.create_table(self.name, columns, pk=pk, foreign_keys=foreign_keys)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue