2016-08-27 2 views
0

나는 교육 목적을 위해 다음 코드를 사용하고 있습니다 :cur.fetchone() [0]은 무엇을합니까?

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 = 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]; 
    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() 

cur.fetchone() [0]은 무엇입니까? Member 테이블을 채울 때 cur.fetchnone() [0]이 필요하지 않은 이유는 무엇입니까?

https://pr4e.dr-chuck.com/tsugi/mod/sql-intro/roster_data.php?PHPSESSID=7530ba71982b2e10c3f61bd0cb1bfcb5

답변

1

cur.fetchone()가 커서에 실행 된 쿼리에 대한 하나 개의 결과 행을 검색합니다

은 당신의 프로그램에 의해 읽어 JSON 파일을 다운로드 할 수 있습니다. 행은 항상 하나 이상의 열로 구성된 시퀀스이고 [0]은 첫 번째 요소를 가져올 행을 인덱싱합니다.

SELECT 쿼리에서 결과를 검색하는 것이 좋습니다. in는 데이터베이스에 데이터를 추가하며 해당 작업에 대해 검색 할 결과가 없습니다.

SELECT 쿼리는 추가 정보를 검색하여 구성원 테이블에 삽입합니다. 사용자 및 코스 표의 id 열은 자동 증가이므로 행을 삽입 할 때마다 새 행에 대해 새 ID가 생성됩니다. SELECT 문은이 id 값을 검색하여 Member 테이블에서 사용할 수 있도록합니다.