此应用程序将以JSON格式读取名册数据,解析文件,然后生成包含User,Course和Member表的SQLite数据库,并填充数据文件中的表。
此代码不完整,因为我需要修改程序以在Member表中存储角色列以完成问题。我无法理解如何做到这一点。
import json
import sqlite3
conn = sqlite3.connect('rosterdb.sqlite')
cur = conn.cursor()
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 = raw_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];
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) VALUES ( ?, ? )''',
( user_id, course_id ) )
conn.commit()
对程序进行必要的更改并且已成功运行读取给定的JSON数据后,运行以下SQL命令:
SELECT hex(User.name || Course.title || Member.role ) AS X FROM
User JOIN Member JOIN Course
ON User.id = Member.user_id AND Member.course_id = Course.id
ORDER BY X
在结果记录集中找到第一行,并输入看起来像53656C696E613333的长字符串。
答案 0 :(得分:0)
一方面,您需要在代码中进行两项更改:
GTLGmailMessage 0x7fbb7e077a30: {id:"15264d6492cedfa5" threadId:"15264d6492cedfa5" labelIds:[1]}
和
name = entry[0];
title = entry[1];
role = entry[2];
print name, title, role
但另一方面,如果您的Coursera作业有问题,您应该真正在课堂讨论论坛上发帖(在阅读了人们已经在那里发布的内容之后,如果有答案的话)你的问题)而不是Stack Overflow。考虑到你的问题是关于前一段时间而不是现在的任务,我在这里谈论它并不是很糟糕,但是,是的,将来使用讨论论坛,看看我在这里发布的内容是为了了解发生了什么。