Skip to content

Commit

Permalink
many to many
Browse files Browse the repository at this point in the history
  • Loading branch information
BrandConstantin committed Sep 27, 2020
1 parent cbd1b46 commit 4f30891
Show file tree
Hide file tree
Showing 17 changed files with 5,155 additions and 0 deletions.
61 changes: 61 additions & 0 deletions 19_databases/manyToMany/example/roster.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
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.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)

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()

0 comments on commit 4f30891

Please sign in to comment.