.table_names and .tables properties plus expanded docs

This commit is contained in:
Simon Willison 2018-07-31 17:35:36 -07:00
commit 515d362ad6
5 changed files with 54 additions and 11 deletions

View file

@ -20,8 +20,11 @@ class Database:
def __getitem__(self, table_name):
return Table(self, table_name)
def __repr__(self):
return "<Database {}>".format(self.conn)
@property
def tables(self):
def table_names(self):
return [
r[0]
for r in self.conn.execute(
@ -29,6 +32,10 @@ class Database:
).fetchall()
]
@property
def tables(self):
return [self[name] for name in self.table_names]
def create_table(self, name, columns, pk=None, foreign_keys=None):
foreign_keys = foreign_keys or []
foreign_keys_by_name = {fk[0]: fk for fk in foreign_keys}
@ -69,7 +76,12 @@ class Table:
def __init__(self, db, name):
self.db = db
self.name = name
self.exists = self.name in self.db.tables
self.exists = self.name in self.db.table_names
def __repr__(self):
return "<Table {}{}>".format(
self.name, " (does not exist yet)" if not self.exists else ""
)
@property
def count(self):