在我的程序中,教师用户创建了一个班级,并将其添加到数据库中。然后,他们输入学生的全名,然后在数据库中进行拆分和搜索。如果找到,则将班级名称插入“学生”行。我在将班级名称插入名字和姓氏值与老师输入的值相同的地方时遇到问题。
这是为用户创建表的代码:
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
答案 0 :(得分:1)
您不需要INSERT
语句,但需要UPDATE
:
UPDATE users SET ClassName = ? WHERE FName = ? AND SName= ?;