| COMP3311 Final Exam 21T3 |
The University of New South Wales COMP3311 Database Systems Final Exam 21T3 |
Database Systems |
Consider the following two fragments of Python/Psycopg2 code:
| A | B | |
import psycopg2
zid = 5128688
q1 = '''
select t.id,t.code
from program_enrolments e
join terms t on e.term = t.id
where e.student = %s
order by t.starting
'''
q2 = '''
select s.code, s.name
from course_enrolments e
join courses c on e.course = c.id
join subjects s on c.subject = s.id
where c.term = %s and e.student = %s
order by s.code
'''
try:
db = psycopg2.connect("dbname=mymyunsw")
c1 = db.cursor()
c2 = db.cursor()
c1.execute(q1,[zid])
for t in c1.fetchall():
print(t[1])
c2.execute(q2,[t[0],zid])
for s in c2.fetchall():
print(s[0],s[1])
c2.close()
c1.close()
except:
print("DB error: ", err)
finally:
if db:
db.close()
|
import psycopg2
zid = 5128688
q1 = '''
select t.id, t.code, s.code, s.name
from course_enrolments e
join courses c on e.course = c.id
join terms t on c.term = t.id
join subjects s on c.subject = s.id
where e.student = %s
order by t.starting,s.code
'''
try:
db = psycopg2.connect("dbname=mymyunsw")
c = db.cursor()
c.execute(q1,[zid])
prev = 0
for t in c.fetchall():
if t[1] != prev:
print(t[1])
print(t[2],t[3])
prev = t[1]
c.close()
except:
print("DB error: ", err)
finally:
if db:
db.close()
|
Assume that this student (zid:5128688) studied 29 subjects over 10 terms. Assume also that the scripts have no errors.
Do these two scripts produce the same output?
How many times does each script call the execute() method?
Which script is likely to be faster?
Instructions: