Initial Commit
This commit is contained in:
56064
python-dbapi/School-Participation_rates_23_24.csv
Normal file
56064
python-dbapi/School-Participation_rates_23_24.csv
Normal file
File diff suppressed because it is too large
Load Diff
18441
python-dbapi/School_Test_by_level_2023_2024.csv
Normal file
18441
python-dbapi/School_Test_by_level_2023_2024.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
python-dbapi/vdoe.db
Normal file
BIN
python-dbapi/vdoe.db
Normal file
Binary file not shown.
141
python-dbapi/vdoe.py
Normal file
141
python-dbapi/vdoe.py
Normal file
@@ -0,0 +1,141 @@
|
||||
"""Analyze SOL test pass rates and other results provided by VDOE.
|
||||
|
||||
Author: Nicholas Tamassia
|
||||
Version: 2.9.2025
|
||||
"""
|
||||
|
||||
import csv
|
||||
import sqlite3
|
||||
|
||||
|
||||
# TODO add your functions here (see the lab instructions)
|
||||
def create_tables():
|
||||
_ = cur.execute("DROP TABLE IF EXISTS participation")
|
||||
_ = cur.execute(
|
||||
"""
|
||||
CREATE TABLE participation (
|
||||
div_num integer,
|
||||
div_name text,
|
||||
sch_num integer,
|
||||
sch_name text,
|
||||
sch_type text,
|
||||
low_grade text,
|
||||
high_grade text,
|
||||
subject text,
|
||||
subgroup text,
|
||||
number_tested integer,
|
||||
number_students integer,
|
||||
part_rate_2324 real
|
||||
)
|
||||
"""
|
||||
)
|
||||
_ = cur.execute("DROP TABLE IF EXISTS test_results")
|
||||
_ = cur.execute(
|
||||
"""
|
||||
CREATE TABLE test_results (
|
||||
div_num integer,
|
||||
div_name text,
|
||||
sch_num integer,
|
||||
sch_name text,
|
||||
sch_type text,
|
||||
low_grade text,
|
||||
high_grade text,
|
||||
subject text,
|
||||
grade_level text,
|
||||
test_name text,
|
||||
pass_rate_2122 integer,
|
||||
pass_rate_2223 integer,
|
||||
pass_rate_2324 integer,
|
||||
adv_rate_2122 integer,
|
||||
adv_rate_2223 integer,
|
||||
adv_rate_2324 integer
|
||||
)"""
|
||||
)
|
||||
con.commit()
|
||||
|
||||
|
||||
def import_data():
|
||||
with open("School-Participation_rates_23_24.csv", newline="") as file:
|
||||
reader = csv.reader(file)
|
||||
_ = next(reader) # skip header row
|
||||
for row in reader:
|
||||
_ = cur.execute(
|
||||
"""INSERT INTO participation
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
|
||||
row,
|
||||
)
|
||||
with open("School_Test_by_level_2023_2024.csv", newline="") as file:
|
||||
reader = csv.reader(file)
|
||||
_ = next(reader) # skip header row
|
||||
for row in reader:
|
||||
_ = cur.execute(
|
||||
"""INSERT INTO test_results
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
|
||||
row,
|
||||
)
|
||||
con.commit()
|
||||
|
||||
|
||||
def query_school(div_num: int, sch_num: int):
|
||||
# Query the participation rates
|
||||
res = cur.execute(
|
||||
"""
|
||||
SELECT div_name, sch_name, subject, number_tested, number_students
|
||||
FROM participation
|
||||
WHERE div_num = ?
|
||||
AND sch_num = ?
|
||||
AND subgroup = 'All Students'
|
||||
""",
|
||||
(div_num, sch_num),
|
||||
)
|
||||
students_tested: list[tuple[str, str, str, int, int]] = res.fetchall()
|
||||
print()
|
||||
print(f"Results for {students_tested[0][1]}, {students_tested[0][0]}")
|
||||
print()
|
||||
for row in students_tested:
|
||||
print(f"Subject: {row[2]}, Tested: {row[3]}/{row[4]}")
|
||||
|
||||
res = cur.execute(
|
||||
"""
|
||||
SELECT subject, grade_level, test_name, pass_rate_2324
|
||||
FROM test_results
|
||||
WHERE div_num = ?
|
||||
AND sch_num = ?
|
||||
""",
|
||||
(div_num, sch_num),
|
||||
)
|
||||
data: list[tuple[str, int, str, float | str | None]] = res.fetchall()
|
||||
print()
|
||||
for row in data:
|
||||
if row[3] is not None and row[3] != "<":
|
||||
print(f"{row[0]}, {row[1]}, {row[2]}, 2023-24 Pass Rate: {row[3]}")
|
||||
print()
|
||||
|
||||
|
||||
def update_school(div_num: int, sch_num: int):
|
||||
print("Hacking database...", end="")
|
||||
_ = cur.execute(
|
||||
"""
|
||||
UPDATE test_results
|
||||
SET pass_rate_2324 = 100, adv_rate_2324 = 100
|
||||
WHERE div_num = ?
|
||||
AND sch_num = ?
|
||||
""",
|
||||
(div_num, sch_num),
|
||||
)
|
||||
con.commit()
|
||||
print("success!\nHave a nice day.")
|
||||
|
||||
|
||||
# DO NOT EDIT THESE VARIABLES; use them in your functions.
|
||||
# Connect to the SQLite database file and create a cursor.
|
||||
if __name__ == "__main__":
|
||||
con = sqlite3.connect("vdoe.db")
|
||||
cur = con.cursor()
|
||||
|
||||
create_tables()
|
||||
import_data()
|
||||
div_num = int(input("Enter division number: "))
|
||||
sch_num = int(input("Enter school number: "))
|
||||
query_school(div_num, sch_num)
|
||||
update_school(div_num, sch_num)
|
||||
Reference in New Issue
Block a user