Вставка в таблицу, где выполняются два других условия - PullRequest
1 голос
/ 05 ноября 2019

В моей программе пользователь учитель создает класс, и он добавляется в базу данных. Затем они вводят полное имя учащегося, где оно разделяется и ищется в базе данных. Если найден, имя класса вставляется в строку студентов. У меня возникают проблемы при вставке имени класса, где значения имени и фамилии совпадают со значениями, введенными учителем.

Это код для создания таблицы для пользователей:

c.execute("""CREATE TABLE IF NOT EXISTS users (
            UserID text PRIMARY KEY,
            FName text,
            SName text,
            username text,
            password varchar,
            userType text,
            ClassName text,
            FOREIGN KEY ("ClassName") REFERENCES "ClassInfo"("ClassName"));""")

Этот код используется для вставки имени класса в таблицу для ученика. Это работает до последней команды, где я пытаюсь вставить.

studentname = (var_studname.get())
        conn = sqlite3.connect('MyComputerScience.db')
        print (studentname)
        c = conn.cursor()
        firstName, lastName = studentname.split(" ")
        c.execute ("SELECT * FROM users WHERE FName = ? AND SName= ? AND  usertype = 'Student'", (firstName, lastName,))
        results = c.fetchall()
        if len(results) == 0:
            Label(screen6, text = "Student doesn't exist!", fg="RED").place(relx=0.101, rely=0.725, height=21, width=194) 
        else:
            Label(screen6, text = ""+firstName+" Added!", fg="Green").place(relx=0.101, rely=0.725, height=21, width=194) 
            var_inserttoclass = (var_classname.get(), firstName, lastName, )
            c.execute('insert INTO users (ClassID) WHERE FName = ? AND SName= ?  VALUES (?,?,?);', var_inserttoclass)
            conn.commit()

Это ошибка, которую я получаю:

c.execute('insert INTO users (ClassID) WHERE FName = ? AND SName= ?  VALUES (?,?,?);', var_inserttoclass)
sqlite3.OperationalError: near "WHERE": syntax error

1 Ответ

1 голос
/ 05 ноября 2019

Вам не нужен оператор INSERT, но UPDATE:

UPDATE users SET ClassName = ? WHERE FName = ? AND SName= ?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...