根据用户输入更新表

时间:2018-06-12 18:16:10

标签: python-3.x sqlite sql-update

我创建了一个包含以下详细信息的表:

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可以是name或email,value_to_set可以是name的新值或email的新值.lec_no是讲师的id,我们想要更改其详细信息。

然而,当我运行我的代码时,我收到以下错误:

sqlite3.OperationalError: no such column: field_to_update

我知道我的表中没有像field_to_update这样的列,但是如何根据用户输入设置列更新。

2 个答案:

答案 0 :(得分:0)

在最后一行中,您应该将field_to_update替换为您的输入和更新后的值。

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

(你错过了一个冒号和实际的value_to_set

答案 1 :(得分:0)

我在update语句中连接了变量field_to_update,然后添加了问号来表示其他两个变量并且它有效。这是我的代码:

return Content()