-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrecord.py
More file actions
137 lines (121 loc) · 4.3 KB
/
record.py
File metadata and controls
137 lines (121 loc) · 4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import sqlite3
primary_database_name='fibonacci_data.db'
class DbOperation(): #CONVENTION - USE 'Db' as object name to instanciate this class.
def __init__(self):
self.connect_database(primary_database_name)
self.cur.execute('''
CREATE TABLE
IF NOT EXISTS
main
(SNO INTEGER PRIMARY KEY,
AMOUNT INTEGER,
DATE DATE,
TIME TIME,
MODE CHAR(30),
REMARK VARCHAR DEFAULT NULL,
CATEGORY CHAR(60));
''')
self.cur.execute('''
CREATE TABLE
IF NOT EXISTS
category
(SNO INTEGER PRIMARY KEY,
CATEGORY VARCHAR);
''')
self.close_database()
def connect_database(self,database):
self.connection=sqlite3.connect(database)
self.cur=self.connection.cursor()
def close_database(self):
self.connection.commit()
self.connection.close()
def add_category(self,value):
self.connect_database(primary_database_name)
self.cur.execute('''
INSERT INTO
category (CATEGORY)
VALUES(?);''',(value,))
self.close_database()
#Insert Expense
def record_expense(self, values : tuple) -> None:
self.connect_database(primary_database_name)
self.cur.execute('''
INSERT INTO
main (AMOUNT,DATE,TIME,MODE,REMARK,CATEGORY)
VALUES(?,?,?,?,?,?);''',values)
self.close_database()
#FetchCategory_Values
def fetch_categories(self):
self.connect_database(primary_database_name)
results=self.cur.execute('''
SELECT DISTINCT category FROM main;
''')
results=results.fetchall()
self.close_database()
lis=[]
for i in range(len(results)):
lis.append(results[i][0])
return lis
def fetch_rows_all(self):
self.connect_database(primary_database_name)
results=self.cur.execute('''
SELECT category,remark,
strftime("%d",date),
strftime("%H:%M",time),
mode,amount
FROM main
ORDER BY sno DESC;
''')
results=results.fetchall()
self.close_database()
return results
def data_for_pie_chart(self):
self.connect_database(primary_database_name)
self.results=self.cur.execute(
'''
SELECT SUM(amount)
FROM main
GROUP BY category;
'''
)
lis=[]
for rows in self.results.fetchall():lis.append(rows[0])
self.close_database()
return lis
def data_for_bar_month(self):
self.connect_database(primary_database_name)
self.results=self.cur.execute(
'''
SELECT strftime('%m',date) AS month, SUM(amount)
FROM main
GROUP BY month;
'''
)
lis={'months':[],'volume':[]}
for rows in self.results.fetchall():lis['volume'].append(rows[1]);lis['months'].append(rows[0])
self.close_database()
return lis
def data_for_bar_year(self):
self.connect_database(primary_database_name)
self.results=self.cur.execute(
'''
SELECT strftime('%Y',date) AS year, SUM(amount)
FROM main
GROUP BY year;
'''
)
lis={'years':[],'volume':[]}
for rows in self.results.fetchall():lis['volume'].append(rows[1]);lis['years'].append(rows[0])
self.close_database()
return lis
def Tests(self): #USE for debugging.
self.connect_database(primary_database_name)
self.results=self.cur.execute(
'''
SELECT * FROM category;
''')
for rows in self.results.fetchall():print(rows)
self.close_database()
if __name__=='__main__':
Db=DbOperation()
print(Db.data_for_bar_month())