· 6 years ago · Aug 23, 2019, 08:54 AM
1from sqlite3 import *
2
3
4class DB:
5 def __init__(self):
6 self.connection = connect('todo.db')
7 self.cursor = self.connection.cursor()
8
9 self.createTable()
10
11 # https://pastebin.com/i7uLp7dB
12
13 def createTable(self):
14 try:
15 self.update('''
16 CREATE TABLE Tasks (
17 id INTEGER UNIQUE NOT NULL PRIMARY KEY AUTOINCREMENT,
18 task TEXT NOT NULL,
19 desc TEXT NOT NULL,
20 date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
21 );
22 ''')
23 except OperationalError:
24 print('Database exists')
25
26 def query(self, query):
27 self.cursor.execute(query)
28 return self.cursor.fetchall()
29
30 def update(self, query):
31 self.cursor.execute(query)
32 self.connection.commit()
33 return self.cursor.fetchall()
34
35
36class Task:
37 def __init__(self, name, desc, id=None):
38 self.name = name
39 self.desc = desc
40 self.id = id
41
42 def __str__(self):
43 if len(self.desc) > 0:
44 return '{} ({})'.format(self.name, self.desc)
45 else:
46 return self.name
47
48 def __repr__(self):
49 return self.__str__()
50
51 def save(self):
52 db.update('''
53 INSERT INTO Tasks
54 ("task", "desc")
55 VALUES("{}", "{}")'''.format(self.name, self.desc)
56 )
57 return self
58
59 @staticmethod
60 def all():
61 tasks = db.query('SELECT * FROM Tasks')
62 output = []
63 for task in tasks:
64 output.append(Task(task[1], task[2], task[0]))
65 return output
66
67
68db = DB()