Обновление таблицы на основе пользовательского ввода - PullRequest
0 голосов
/ 12 июня 2018

Я создал таблицу со следующими данными:

myStr2 = "CREATE TABLE Lecturers (lec_no VARCHAR(3), name VARCHAR(30), email VARCHAR(30), PRIMARY KEY(lec_no))"

Затем я создал функцию, которая сможет обновлять таблицу.

def update_lecturer(self, field_to_update, value_to_set, lec_no):
           self.field_to_update = field_to_update
           self.value_to_set = value_to_set
           self.lec_no = lec_no
           self.myCursor.execute("UPDATE Lecturers SET field_to_update = :field_to_update WHERE lec_no =:lec_no",{'field_to_update':self.field_to_update,'value_to_set':self.value_to_set,'lec_no':self.lec_no})

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

field_to_update = input("Field update:")
value_to_set = input("Value to set:")
lec_no = input("Lec_no:")

, где field_to_update может быть именем или электронной почтой, value_to_set может быть либо новым значением имени, либо новым значением электронной почты. lec_no - это идентификатор лектора, детали которого мы будемхотелось бы изменить.

Однако, когда я запускаю свой код, я получаю следующую ошибку:

sqlite3.OperationalError: no such column: field_to_update

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

Ответы [ 2 ]

0 голосов
/ 15 июня 2018

Я конкатенировал переменную field_to_update в операторе обновления, затем добавил вопросительные знаки для представления двух других переменных, и это сработало.Вот мой код:

def update_lecturer(self, field_to_update, value_to_set, lec_no):
           self.field_to_update = field_to_update
           self.value_to_set = value_to_set
           self.lec_no = lec_no
           self.myCursor.execute("UPDATE Lecturers SET "+self.field_to_update+" = (?) WHERE lec_no = (?)",(self.value_to_set,self.lec_no))       

           self.myConnection.commit() 
0 голосов
/ 13 июня 2018

В последней строке вы должны заменить field_to_update на ваш ввод и обновленные значения.

self.myCursor.execute("UPDATE Lecturers SET :field_to_update = :value_to_set ...

(вы пропустили двоеточие и фактическое value_to_set)

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