-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatabase.py
83 lines (65 loc) · 1.82 KB
/
database.py
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
#
# © 2021 David Strip - [email protected]
#
import sqlite3 as sql
from os.path import exists
from db_objects import makeAccount, makeFund, makeUnitPurchase, makeAccountValue
#%%
def createDB(filename):
"Creates sqlite db. Returns false if file already exists, otherwise returns db connection object"
if exists(filename):
return False
else:
con = sql.Connection(filename)
initializeDB(con)
return con
def connectDB(filename):
"Connects to existing db. Returns false if db doesn't exist, otherwise returns connection object"
if exists(filename):
return sql.Connection(filename)
else:
return False
def initializeDB(con):
"Creates initial tables in new db. Throws error if database previously initalized"
initializeAcctTable(con)
initializeFundTable(con)
initializeAccountValueTable(con)
initializeUnitPurchaseTable(con)
def initializeAcctTable(con):
"Creates account table in db"
con.execute("""
CREATE TABLE Accounts (
id integer PRIMARY KEY,
name text,
brokerage text,
account_no text)""")
def initializeFundTable(con):
"Creates Fund Table in db"
con.execute("""
CREATE TABLE Funds (
id integer PRIMARY KEY,
name text,
initial_units,
account_id integer)""")
def initializeAccountValueTable(con):
"Creates AccountValue table in db"
con.execute("""
CREATE TABLE AccountValue (
id integer PRIMARY KEY,
date text,
value float,
account_id integer)""")
def initializeUnitPurchaseTable(con):
"Creates Transaction table in db"
con.execute("""
CREATE TABLE UnitPurchase (
id integer PRIMARY KEY,
fund_id integer,
amount decimal,
date_id integer)""")
def fetchAccounts(con):
accounts = []
cursor = con.cursor()
for row in cursor.execute("SELECT id, name, brokerage, account_no from Accounts "):
accounts += [makeAccount(row)]
return accounts