X-Git-Url: https://git.phdru.name/?p=m_librarian.git;a=blobdiff_plain;f=m_librarian%2Fdb.py;h=d176e7bc629fee4583ac325ea41743ea1fa4cef5;hp=225e2ec613a97bb0751442bf6501430a5e9f9909;hb=50a18dcde6c5664cbbcc2b3b5585a4ec52964650;hpb=29ce87d39fab6013f6711906aa23d07056bc996f diff --git a/m_librarian/db.py b/m_librarian/db.py index 225e2ec..d176e7b 100755 --- a/m_librarian/db.py +++ b/m_librarian/db.py @@ -2,7 +2,7 @@ import os from sqlobject import SQLObject, StringCol, UnicodeCol, IntCol, BoolCol, \ - ForeignKey, DateCol, connectionForURI, sqlhub + ForeignKey, DateCol, connectionForURI, sqlhub, dberrors from .config import ml_conf try: @@ -32,19 +32,14 @@ if not db_uri: except OSError: # Perhaps already exists pass db_file = os.path.join(db_dir, 'm_librarian.sqlite') - db_uri = 'sqlite://%s' % db_file.replace(os.sep, '/') + + db_uri = 'sqlite://%s' % db_file.replace(os.sep, '/') sqlhub.processConnection = connectionForURI(db_uri) class Author(SQLObject): - name = UnicodeCol() - count = IntCol() - - -class Genre(SQLObject): - name = StringCol() - title = UnicodeCol() + name = UnicodeCol(unique=True) count = IntCol() @@ -64,15 +59,33 @@ class Book(SQLObject): class Extension(SQLObject): - name = StringCol() + name = StringCol(unique=True) + count = IntCol() + + +class Genre(SQLObject): + name = StringCol(unique=True) + title = UnicodeCol() count = IntCol() class Language(SQLObject): - name = StringCol() + name = StringCol(unique=True) count = IntCol() +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 + + if __name__ == '__main__': print "DB dirs:", db_dirs if db_uri: