From 3e3baae9c6d858b03fd66089e36c2ea1ae2516fb Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 20 Dec 2015 18:55:27 +0300 Subject: [PATCH] Create database tables --- m_librarian/db.py | 26 +++++++++++++++++++------- scripts/ml-initdb.py | 6 ++++++ setup.py | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) create mode 100755 scripts/ml-initdb.py diff --git a/m_librarian/db.py b/m_librarian/db.py index 225e2ec..d63fd41 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: @@ -42,12 +42,6 @@ class Author(SQLObject): count = IntCol() -class Genre(SQLObject): - name = StringCol() - title = UnicodeCol() - count = IntCol() - - class Book(SQLObject): author = ForeignKey('Author') genre = ForeignKey('Genre') @@ -68,11 +62,29 @@ class Extension(SQLObject): count = IntCol() +class Genre(SQLObject): + name = StringCol() + title = UnicodeCol() + count = IntCol() + + class Language(SQLObject): name = StringCol() 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: diff --git a/scripts/ml-initdb.py b/scripts/ml-initdb.py new file mode 100755 index 0000000..79bbe43 --- /dev/null +++ b/scripts/ml-initdb.py @@ -0,0 +1,6 @@ +#! /usr/bin/env python + +from m_librarian.db import init_db + +if __name__ == '__main__': + init_db() diff --git a/setup.py b/setup.py index 5c00a5b..1f102d3 100755 --- a/setup.py +++ b/setup.py @@ -40,6 +40,6 @@ setup(name='m_librarian', ], packages=['m_librarian'], package_data={'m_librarian': ['data/*.txt', 'data/genres_*.glst']}, - scripts=[], + scripts=['scripts/ml-initdb.py'], requires=['SQLObject'], ) -- 2.39.5