3 dbFile = 'sqLibrary.db'
6 bookTableCreation = '''
7 CREATE TABLE IF NOT EXISTS books
8 (id INTEGER PRIMARY KEY,
9 isbn, lccn, title, subtitle, authors, edition,
10 publisher, publish_year, publish_month, publish_location,
11 pages, pagination, weight, last_updated);
13 CREATE TABLE IF NOT EXISTS books_deleted
14 (id INTEGER PRIMARY KEY,
15 isbn, lccn, title, subtitle, authors, edition,
16 publisher, publish_year, publish_month, publish_location,
17 pages, pagination, weight, last_updated);
20 columns = ['id', 'isbn', 'lccn',
21 'title', 'subtitle', 'authors', 'edition',
22 'publisher', 'publish year', 'publish month', 'publish location',
23 'pages', 'pagination', 'weight', 'last updated']
25 bookTriggerCreation = '''
26 CREATE TRIGGER IF NOT EXISTS insert_books_time AFTER INSERT ON books
28 UPDATE books SET last_updated = DATETIME('NOW') WHERE rowid = new.rowid;
31 CREATE TRIGGER IF NOT EXISTS update_books_time AFTER UPDATE ON books
33 UPDATE books SET last_updated = DATETIME('NOW') WHERE rowid = new.rowid;
36 CREATE TRIGGER IF NOT EXISTS delete_books_backup BEFORE DELETE ON books
38 INSERT INTO books_deleted (isbn, lccn,
39 title, subtitle, authors, edition,
40 publisher, publish_year, publish_month, publish_location,
41 pages, pagination, weight, last_updated)
43 title, subtitle, authors, edition,
44 publisher, publish_year, publish_month, publish_location,
45 pages, pagination, weight, last_updated
47 WHERE rowid = old.rowid;
52 return s.replace(" ","_").lower()
54 # escapes strings and such
56 return '"' + str(v).strip().replace('"','""') + '"'
59 conn = sqlite3.connect(dbFile)
63 for k,v in book.items():
65 cols.append(colify(k))
66 vals.append(stringify(v))
68 query = "INSERT INTO "+bookTable+" ("+", ".join(cols)+") VALUES ("+", ".join(vals)+");"
73 def updateBook(book, bookID):
74 conn = sqlite3.connect(dbFile)
77 for k,v in book.items():
78 updates.append(colify(k)+"="+stringify(v))
79 query = "UPDATE "+bookTable+" SET " + ", ".join(updates)+" WHERE id = " +str(bookID)+";"
85 conn = sqlite3.connect(dbFile)
87 query = "SELECT * FROM "+bookTable+";"
101 def getBookByID(bookid):
102 conn = sqlite3.connect(dbFile)
104 query = "SELECT * FROM "+bookTable+" WHERE id = "+str(bookid)+";"
117 def removeBook(bookid):
118 conn = sqlite3.connect(dbFile)
120 query = "DELETE FROM " +bookTable+ " WHERE id = "+str(bookid)+";"
125 def createBooksTable():
126 conn = sqlite3.connect(dbFile)
128 c.executescript(bookTableCreation)
132 def createTriggers():
133 conn = sqlite3.connect(dbFile)
135 c.executescript(bookTriggerCreation)