-
Notifications
You must be signed in to change notification settings - Fork 0
/
seed.py
174 lines (128 loc) · 5.57 KB
/
seed.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
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
from model import Restaurant, Opentable, Yelp_Detail, User, User_Detail
from model import connect_to_db, db
from server import app
import json
def load_opentable():
"""Load opentable data to database from opentable.txt file
"""
print "Loading Opentable data"
#Delete all rows in table to reseed data every time this function is called
Opentable.query.delete()
#Read the source file and insert data, use 'rU' so \r is read as line break
for line in open('seed/opentable.csv', 'rU'):
line = line.rstrip()
opentable_id, name = line.split(',')
opentable = Opentable(opentable_id=opentable_id,
name=name)
#add opentable info to the database
db.session.add(opentable)
#commit work
db.session.commit()
def load_restaurants():
"""Load restaurants into database from restaurant.txt file"""
print "Loading Restaurants"
#Delete all rows in table to reseed data every time this function is called
Restaurant.query.delete()
#Read the source file and insert data, use 'rU' so \r is read as line break
for line in open('seed/restaurants.csv', 'rU'):
line = line.rstrip()
name, opentable_id, eater, yelp, timeout, zagat, michelin, infatuation, lat, lng = line.split(',')
if opentable_id == 'None':
opentable_id = None
#create restaurant object based on inputs from the line
restaurant = Restaurant(name=name,
opentable_id=opentable_id,
eater=eater,
yelp=yelp,
timeout=timeout,
zagat=zagat,
michelin=michelin,
infatuation=infatuation,
lat=lat,
lng=lng)
#add restaurant to the database
db.session.add(restaurant)
#commit work
db.session.commit()
def load_yelp_details():
"""Load detailed information on restaurants from yelp api"""
print "Loading Yelp Details"
#Delete all rows in table to reseed data every time this function is called
Yelp_Detail.query.delete()
yelp_dict = json.load(open('seed/yelp_data.json'))
for resto, details in yelp_dict.items():
resto_name = resto
yelp_id, yelp_name, image_url, display_phone, review_count, categories, rating, address, city, neighborhoods, lat, lng, reservation_url = details
if reservation_url == 'None':
reservation_url = None
#create table entry for yelp detail
yelp_detail = Yelp_Detail(resto_name=resto_name,
yelp_id=yelp_id,
yelp_name=yelp_name,
image_url=image_url,
display_phone=display_phone,
review_count=review_count,
categories=categories,
rating=rating,
address=address,
city=city,
neighborhoods=neighborhoods,
lat=lat,
lng=lng,
reservation_url=reservation_url)
#add yelp detail to the database
db.session.add(yelp_detail)
#commit work
db.session.commit()
def load_users():
"""Load sample users to database"""
print "Loading Users"
#Delete all rows in table to reseed data every time this function is called
User.query.delete()
#Read the source file and insert data, use 'rU' so \r is read as line break
for line in open('seed/users.csv', 'rU'):
line = line.rstrip()
user_email, user_phone, password = line.split(',')
if user_email == 'None':
user_email = None
#create user object based on inputs from the line
user = User(user_email=user_email, user_phone=user_phone, password=password)
#add user to the database
db.session.add(user)
#commit work
db.session.commit()
def load_user_details():
"""Load sample user feedback to database"""
print "Loading User Details"
#Delete all rows in table to reseed data every time this function is called
User_Detail.query.delete()
#Read the source file and insert data, use 'rU' so \r is read as line break
for line in open('seed/user_details.csv', 'rU'):
line = line.rstrip()
user_id, opentable_id, have_tried, want_to_try, like_resto = line.split(',')
# Convert fields with 'None' to None-type
if have_tried == 'None':
have_tried = None
if want_to_try == 'None':
want_to_try = None
if like_resto == 'None':
like_resto = None
#create user object based on inputs from the line
user_details = User_Detail(user_id=user_id,
opentable_id=opentable_id,
have_tried=have_tried,
want_to_try=want_to_try,
like_resto=like_resto)
#add user to the database
db.session.add(user_details)
#commit work
db.session.commit()
if __name__ == "__main__":
connect_to_db(app)
# In case tables haven't been created, create them
db.create_all()
# Import data for various tables
load_opentable()
load_restaurants()
load_yelp_details()
load_users()