sqlite-utils index-foreign-keys / db.index_foreign_keys()

Closes #33
This commit is contained in:
Simon Willison 2019-06-30 16:50:54 -07:00 committed by GitHub
commit e8f887ef4a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 0 deletions

View file

@ -315,6 +315,16 @@ class Database:
# can see the newly created foreign key.
self.vacuum()
def index_foreign_keys(self):
for table_name in self.table_names():
table = self[table_name]
existing_indexes = {
i.columns[0] for i in table.indexes if len(i.columns) == 1
}
for fk in table.foreign_keys:
if fk.column not in existing_indexes:
table.create_index([fk.column])
def vacuum(self):
self.conn.execute("VACUUM;")