-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquerysqlsix.py
131 lines (84 loc) · 3.26 KB
/
querysqlsix.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
import csv
import mysql.connector
cnx = mysql.connector.connect(user='pisa', password='pisa2012',
host='127.0.0.1',
database='pisa')
table = "schools"
## Query for getting school data:
#SCHOOLID "School ID 7-digit (region ID + stratum ID + 3-digit school ID)"
# SC14Q10 "Shortage - Library materials"
# SC14Q09 "Shortage - Computer software"
# SC14Q08 "Shortage - Internet connectivity"
# SC14Q05 "Shortage - Science lab equipment"
# SC14Q04 "Shortage - Other teachers"
# SC14Q07 "Shortage - Computers for instruction"
# SC14Q06 "Shortage - Instructional materials"
# SC14Q01 "Shortage - Science teachers"
# SC14Q03 "Shortage - <Test language> teachers"
# SC14Q02 "Shortage - Maths teachers"
sqlselection = ['SCHOOLID','SC14Q01','SC14Q02','SC14Q03','SC14Q04','SC14Q05','SC14Q06','SC14Q07','SC14Q08','SC14Q09','SC14Q10']
avemath = '(AVG(PV1MATH) + AVG(PV2MATH) + AVG(PV3MATH) + AVG(PV4MATH) + AVG(PV5MATH))/(5.0)'
averead = '(AVG(PV1READ) + AVG(PV2READ) + AVG(PV3READ) + AVG(PV4READ) + AVG(PV5READ))/(5.0)'
avescie = '(AVG(PV1SCIE) + AVG(PV2SCIE) + AVG(PV3SCIE) + AVG(PV4SCIE) + AVG(PV5SCIE))/(5.0)'
#Create string for sql query
def makestring(sqlselection,where,groupby,table):
qstring = ""
qstring += "SELECT"
for item in sqlselection:
qstring += " " +item + ","
# remove last comma
qstring = qstring[:-1]
qstring += " FROM " + table
if not where == False:
qstring += " WHERE " + where
if not groupby == False:
qstring += " GROUP BY " + groupby
qstring += ";"
return qstring
def getpvs():
selection = ["SCHOOLID",avemath,averead,avescie]
groupby = "SCHOOLID"
where = 'CNT = "United Kingdom"'
sqlstring = makestring(selection,where,groupby,"pisa")
print sqlstring
cursor = cnx.cursor()
cursor.execute(sqlstring)
result = cursor.fetchall()
print result
resultdict = {}
for line in result:
thisdict = {"math":line[1],"read":line[2],"scie":line[3]}
resultdict[line[0]]=thisdict
return resultdict
pvs = getpvs()
print pvs
where = 'CNT = "GBR"'
#sqlselection.append(mathpv)
#sqlselection.append(readpv)
#sqlselection.append(sciepv)
groupby = False
sqlstring = makestring(sqlselection,where,groupby,table)
#print sqlstring
cursor = cnx.cursor()
cursor.execute(sqlstring)
result = cursor.fetchall()
print sqlselection
with open('ukschoolsthree.csv', 'wt') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=',',
quotechar='"', quoting=csv.QUOTE_MINIMAL)
sqlselection.append('schoolmath')
sqlselection.append('schoolread')
sqlselection.append('schoolscie')
print type(result)
csvwriter.writerow(sqlselection)
for line in result:
schoolid = int(line[0])
#print type(line)
newline = list(line)
#print newline
newline.append(pvs[schoolid]["math"])
newline.append(pvs[schoolid]["read"])
newline.append(pvs[schoolid]["scie"])
csvwriter.writerow(newline)
cnx.close()
#SELECT AVG(PV1MATH), AVG(PV2MATH), AVG(PV3MATH), AVG(PV4MATH), AVG(PV5MATH) FROM pisa WHERE CNT = "Korea";