1
+ import json
2
+ import sqlite3
3
+
4
+ conn = sqlite3 .connect ('rosterdb.sqlite' )
5
+ cur = conn .cursor ()
6
+
7
+ # Do some setup
8
+ cur .executescript ('''
9
+ DROP TABLE IF EXISTS User;
10
+ DROP TABLE IF EXISTS Member;
11
+ DROP TABLE IF EXISTS Course;
12
+ CREATE TABLE User (
13
+ id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
14
+ name TEXT UNIQUE
15
+ );
16
+ CREATE TABLE Course (
17
+ id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
18
+ title TEXT UNIQUE
19
+ );
20
+ CREATE TABLE Member (
21
+ user_id INTEGER,
22
+ course_id INTEGER,
23
+ role INTEGER,
24
+ PRIMARY KEY (user_id, course_id)
25
+ )
26
+ ''' )
27
+
28
+ fname = input ('Enter file name: ' )
29
+ if len (fname ) < 1 :
30
+ fname = 'roster_data.json'
31
+
32
+ # [
33
+ # [ "Charley", "si110", 1 ],
34
+ # [ "Mea", "si110", 0 ],
35
+
36
+ str_data = open (fname ).read ()
37
+ json_data = json .loads (str_data )
38
+
39
+ for entry in json_data :
40
+
41
+ name = entry [0 ]
42
+ title = entry [1 ]
43
+ role = entry [2 ]
44
+
45
+ print (name , title )
46
+
47
+ cur .execute ('''INSERT OR IGNORE INTO User (name)
48
+ VALUES ( ? )''' , (name , ))
49
+ cur .execute ('SELECT id FROM User WHERE name = ? ' , (name , ))
50
+ user_id = cur .fetchone ()[0 ]
51
+
52
+ cur .execute ('''INSERT OR IGNORE INTO Course (title)
53
+ VALUES ( ? )''' , (title , ))
54
+ cur .execute ('SELECT id FROM Course WHERE title = ? ' , (title , ))
55
+ course_id = cur .fetchone ()[0 ]
56
+
57
+ cur .execute ('''INSERT OR REPLACE INTO Member
58
+ (user_id, course_id, role) VALUES ( ?, ?, ? )''' ,
59
+ (user_id , course_id , role ))
60
+
61
+ conn .commit ()
0 commit comments