我创建了一个包含以下详细信息的表:
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这样的列,但是如何根据用户输入设置列更新。
答案 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()