Как устранить ошибку отступа при подключении базы данных sqlite? - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь подключить и вставить данные из json в sqlite. Но это отстой

Я пытался переместиться, избегая пробелов и копаясь с базами данных

conn=sqlite3.connect('rosterdb.sqlite')
cur=conn.cursor()
cur.execute(
'''
DROP TABLE IF EXISTS USER;
DROP TABLE IF EXISTS Course;
DROP TABLE IF EXISTS Member;

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
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 IGNORE INTO Member(user_id,course_id,role) 
        VALUES(?,?,?)''',(user_id,course_id,role))

    conn.commit()

Файл "roster.py", строка 51 cur.execute ('' 'INSERT ИЛИ IGNORE INTO Member (user_id, course_id, role) ^ IndentationError: unindent не соответствует ни одному внешнему уровню отступа

1 Ответ

0 голосов
/ 29 июня 2019

Возможно, вы смешиваете табуляции и пробелы

скопируйте это в ваш редактор:

cur.execute('''INSERT OR IGNORE INTO Member(user_id,course_id,role) 
VALUES(?,?,?)''',(user_id,course_id,role))

И вручную нажмите пробел 4 раза перед cur.execute И вручную нажмите пробел 8 раз передЗНАЧЕНИЯ

cur.execute('''INSERT OR IGNORE INTO Member(user_id,course_id,role) 
    VALUES(?,?,?)''',(user_id,course_id,role))

Пожалуйста, не используйте вкладки в сочетании с пробелами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...