-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrecreate_tables.py
111 lines (93 loc) · 4.16 KB
/
recreate_tables.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
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
from sqlalchemy import Table, Column, Integer, Date, MetaData, create_engine, VARCHAR, Double, ForeignKey, text
from sqlalchemy.orm import sessionmaker
from model.config import DATABASE_URI
########################################################################################
# Dev Env
#
# psql -h $DBSERVER -U $DBUSER -d $DB -p 5432
# export DBSERVER="localhost"
# export DBUSER="postgres"
# export DB="colout"
# export DBPASS="colout"
########################################################################################
def create_database(engine):
meta = MetaData()
contractors = Table(
'contractors', meta,
Column('id', Integer, primary_key=True),
Column('business_name', VARCHAR(255, collation='default')),
Column('contact_name', VARCHAR(255, collation='default')),
Column('phone', VARCHAR(255, collation='default')),
Column('addr', VARCHAR(255, collation='default')),
Column('city', VARCHAR(255, collation='default')),
Column('state', VARCHAR(255, collation='default')),
Column('zip', VARCHAR(255, collation='default')),
Column('email', VARCHAR(255, collation='default')),
Column('logo', VARCHAR(255, collation='default')),
Column('license_number', VARCHAR(255, collation='default')),
Column('license_state', VARCHAR(255, collation='default')),
Column('added_date', Date),
)
customers = Table(
'customers', meta,
Column('id', Integer, primary_key=True),
Column('name', VARCHAR(255, collation='default')),
Column('phone', VARCHAR(255, collation='default')),
Column('addr', VARCHAR(255, collation='default')),
Column('city', VARCHAR(255, collation='default')),
Column('state', VARCHAR(255, collation='default')),
Column('zip', VARCHAR(255, collation='default')),
Column('email', VARCHAR(255, collation='default')),
)
estimates = Table(
'estimates', meta,
Column('id', Integer, primary_key=True),
Column('project_id', ForeignKey("projects.id", ondelete='NO ACTION', onupdate='NO ACTION')),
Column('date', Date),
Column('location', VARCHAR(255, collation='default')),
)
prices = Table(
'prices', meta,
Column('id', Integer, primary_key=True),
Column('contractor_id', ForeignKey("contractors.id", ondelete='NO ACTION', onupdate='NO ACTION')),
Column('project_type_id', ForeignKey("project_types.id", ondelete='NO ACTION', onupdate='NO ACTION')),
Column('price_per_unit', VARCHAR(255, collation='default')),
)
project_types = Table(
'project_types', meta,
Column('id', Integer, primary_key=True),
Column('name', VARCHAR(255, collation='default')),
Column('description', VARCHAR(255, collation='default')),
Column('materials', VARCHAR(255, collation='default')),
Column('units', VARCHAR(255, collation='default')),
)
projects = Table(
'projects', meta,
Column('id', Integer, primary_key=True),
Column('contractor_id', ForeignKey("contractors.id", ondelete='NO ACTION', onupdate='NO ACTION')),
Column('customer_id', ForeignKey("customers.id", ondelete='NO ACTION', onupdate='NO ACTION')),
)
subprojects = Table(
'subprojects', meta,
Column('id', Integer, primary_key=True),
Column('name', VARCHAR(255, collation='default')),
Column('project_id', ForeignKey("projects.id", ondelete='NO ACTION', onupdate='NO ACTION')),
Column('length', Double),
Column('width', Double),
Column('height', Double),
Column('project_type', VARCHAR(255, collation='default')),
)
meta.create_all(engine)
def drop_database(session):
session.execute(text("DROP TABLE IF EXISTS "
"contractors, customers, estimates, prices, project_types, projects, subprojects CASCADE;"))
session.commit()
session.close()
def recreate_database():
engine = create_engine(DATABASE_URI, echo=False)
Session = sessionmaker(bind=engine)
session = Session()
drop_database(session)
create_database(engine)
if __name__ == '__main__':
recreate_database()