-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexport_as_csv.py
executable file
·45 lines (37 loc) · 1.55 KB
/
export_as_csv.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
# Run from GAE remote API:
# {GAE Path}\remote_api_shell.py -s {YourAPPName}.appspot.com
# import export_as_csv
import csv
from google.appengine.ext import ndb
from google.appengine.ext.ndb import metadata
from main import Person, Ride, RideRequest
def exportToCsv(query, csvFileName):
with open(csvFileName, 'wb') as csvFile:
csvWriter = csv.writer(csvFile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
#writeHeader(csvWriter)
first_row = True
rows = 0
for e in query:
#print e
# Write column labels as first row
row_dict = e.to_dict()
if first_row:
first_row = False
keys = sorted(row_dict.keys())
csvWriter.writerow(keys)
values = []
v_str = None
for k in keys:
v_row = row_dict[k]
try:
v_str = v_row.encode('utf-8') if v_row is str else str(v_row)
except UnicodeEncodeError:
v_str = '--'
values.append(v_str)
#print('adding:' + str(values))
csvWriter.writerow(values)
rows += 1
print 'Finished saving ' + str(rows) + ' rows.'
exportToCsv(query = Person.query().order(-Person.last_mod), csvFileName='data/Person_Table.csv')
exportToCsv(query = Ride.query().order(-Ride.start_daytime), csvFileName='data/Ride_Table.csv')
exportToCsv(query = RideRequest.query().order(-RideRequest.passenger_last_seen), csvFileName='data/RideRequest_Table.csv')