From cfecf7e2a3ad24c107e20fb40346284226439513 Mon Sep 17 00:00:00 2001 From: tgb <150552760+325star@users.noreply.github.com> Date: Wed, 3 Apr 2024 18:18:07 +0500 Subject: [PATCH] Create roster.py --- roster.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 roster.py diff --git a/roster.py b/roster.py new file mode 100644 index 0000000..f31d47f --- /dev/null +++ b/roster.py @@ -0,0 +1,64 @@ +import json +import sqlite3 + +conn = sqlite3.connect('rosterdb.sqlite') +cur = conn.cursor() + +# Do some setup +cur.executescript(''' +DROP TABLE IF EXISTS User; +DROP TABLE IF EXISTS Member; +DROP TABLE IF EXISTS Course; + +CREATE TABLE User ( + id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, + name TEXT UNIQUE +); + +CREATE TABLE Course ( + id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, + title TEXT UNIQUE +); + +CREATE TABLE Member ( + user_id INTEGER, + course_id INTEGER, + role INTEGER, + PRIMARY KEY (user_id, course_id) +) +''') + +fname = input('Enter file name: ') +if len(fname) < 1: + fname = 'roster_data_sample.json' + +# [ +# [ "Charley", "si110", 1 ], +# [ "Mea", "si110", 0 ], + +str_data = open(fname).read() +json_data = json.loads(str_data) + +for entry in json_data: + + name = entry[0]; + title = entry[1]; + role = entry[2]; + + print((name, title, role)) + + cur.execute('''INSERT OR IGNORE INTO User (name) + VALUES ( ? )''', ( name, ) ) + cur.execute('SELECT id FROM User WHERE name = ? ', (name, )) + user_id = cur.fetchone()[0] + + cur.execute('''INSERT OR IGNORE INTO Course (title) + VALUES ( ? )''', ( title, ) ) + cur.execute('SELECT id FROM Course WHERE title = ? ', (title, )) + course_id = cur.fetchone()[0] + + cur.execute('''INSERT OR REPLACE INTO Member + (user_id, course_id, role) VALUES ( ?, ?, ? )''', + ( user_id, course_id, role ) ) + + conn.commit()