+def init_db():
+ try:
+ Book.select()[0]
+ except IndexError: # Table exists but is empty
+ return
+ except dberrors.Error:
+ for table in Author, Extension, Genre, Language, Book:
+ table.createTable()
+ else:
+ return
+
+
+def insert_name(table, name, **kw):
+ try:
+ return table.byName(name)
+ except SQLObjectNotFound:
+ return table(name=name, count=0, **kw)
+
+
+def update_counters():
+ for author in Author.select():
+ author.count = len(author.books)
+
+ for ext in Extension.select():
+ ext.count = Book.select(Book.q.extension == ext.name).count()
+
+ for genre in Genre.select():
+ genre.count = len(genre.books)
+
+ for language in Language.select():
+ language.count = Book.select(Book.q.language == language.name).count()
+
+
+def test():