table.create_index(columns, index_name) method

This commit is contained in:
Simon Willison 2018-08-01 08:20:44 -07:00
commit 4427d2d96f
3 changed files with 81 additions and 0 deletions

View file

@ -140,6 +140,19 @@ class Table:
self.db.create_table(self.name, columns, pk=pk, foreign_keys=foreign_keys)
self.exists = True
def create_index(self, columns, index_name=None):
if index_name is None:
index_name = "idx_{}_{}".format(
self.name.replace(" ", "_"), "_".join(columns)
)
sql = """
CREATE INDEX {index_name}
ON {table_name} ({columns});
""".format(
index_name=index_name, table_name=self.name, columns=", ".join(columns)
)
self.db.conn.execute(sql)
def drop(self):
return self.db.conn.execute("DROP TABLE {}".format(self.name))