-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathcomplex_query_2.py
More file actions
91 lines (77 loc) · 2.71 KB
/
Copy pathcomplex_query_2.py
File metadata and controls
91 lines (77 loc) · 2.71 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
import psycopg2
import sys
def heading(str):
print('-'*60)
print("** %s:" % (str,))
print('-'*60, '\n')
SHOW_CMD = True
def print_cmd(cmd):
if SHOW_CMD:
print(cmd.decode('utf-8'))
def print_rows(rows):
for row in rows:
print(row)
#------------------------------------------------------------
# show_menu
#------------------------------------------------------------
def show_menu():
actions[1]()
if cur != None:
cur.close()
if conn != None:
conn.close()
def getRequestsInput():
heading("Driver wants to pick up a ride request. This means transferring a desired requested ride to current ride")
d_id = input('Driver_id (try driver_id 1):')
r_id = input('Request_id (try request_id 3): ')
getRequestInfo(d_id,r_id)
def getRequestInfo(d_id,r_id):
tmpl = '''
SELECT pickup_location, destination, surge, passenger_id
FROM Requests
WHERE request_id = %s;
'''
cmd = cur.mogrify(tmpl, r_id)
cur.execute(cmd)
rows = cur.fetchall()
for row in rows:
pickup_location, destination, surge, passenger_id = row
constructCurrRide(d_id, pickup_location, destination, surge, passenger_id)
deleteRequest(r_id)
def constructCurrRide(d_id, pickup_location, destination, surge, passenger_id):
rideID = input('new ride_id (normally self generated, try 17): ')
tmpl= '''
INSERT INTO CurrRide(ride_id, pickup_location, destination, surge, elapsed_distance, elapsed_time, passenger_id, driver_id) VALUES
(%s,%s,%s,%s,%s,%s,%s,%s);
'''
cmd = cur.mogrify(tmpl, (rideID, pickup_location, destination, surge, 0, 0, passenger_id, d_id))
cur.execute(cmd)
print("Request has been picked up by Driver ", rideID,".")
def deleteRequest(r_id):
tmpl='''
DELETE FROM Requests
WHERE request_id = %s;
'''
cmd = cur.mogrify(tmpl, r_id)
cur.execute(cmd)
print("Request", r_id, "successfully removed from requests!")
actions = { 1:getRequestsInput}
if __name__ == '__main__':
try:
# default database and user
db, user = 'uber', 'syzhao'
# you may have to adjust the user
# python a4-socnet-sraja.py a4_socnet postgres
if len(sys.argv) >= 2:
db = sys.argv[1]
if len(sys.argv) >= 3:
user = sys.argv[2]
# by assigning to conn and cur here they become
# global variables. Hence they are not passed
# into the various SQL interface functions
conn = psycopg2.connect(database=db, user=user)
conn.autocommit = True
cur = conn.cursor()
show_menu()
except psycopg2.Error as e:
print("Unable to open connection: %s" % (e,))