这是我的简报:
老师想要使用学生参加这些测验的结果来记录他们的表现。该 系统应存储每个学生的最后三个分数。老师希望能够输出 特定类的测验结果,排序:
- 按字母顺序排列,每位学生的考试成绩最高
- 以最高分,从最高到最低
- 按平均分,从最高到最低。
详细分析该程序的要求,设计,编码,测试和评估程序 将允许教师选择要查看的班级组以及在排序时使用的字段 输出数据。
我以为我可以这样做,但它不起作用:
import sqlite3
new_db = sqlite3.connect('Quiz.db')
c = new_db.cursor()
print "Sort Alphabetically"
print ""
c.execute("SELECT * FROM Scores ORDER BY Name ")
new_db.commit()
for row in c:
print row
print ""
print "Sort By Score"
print ""
c.execute("SELECT * FROM Scores ORDER BY -Score3, Score2, Score1 ")
new_db.commit()
for row in c:
print row
NewScore = int(input('Enter Your Newest Score: ')
c.execute("UPDATE Scores SET Name=?, Score1=?, Score2=? Score3=?",
(Name, Score2, Score3, NewScore))
c.execute("SELECT * FROM Scores")
for row in c:
print row
new_db.commit()
new_db.close()
这就是它所说的:
c.execute("UPDATE Scores SET Name=?, Score1=?, Score2=? Score3=?",(Name, Score2, Score3, NewScore))
NameError: name 'Name' is not defined
该表已经制作,所以不是那个
答案 0 :(得分:1)
您的错误与您的问题标题无关,也与SQL无关。您尝试使用未定义的变量(Name
,Score2
和Score3
),因此Python会引发NameError
异常。您必须在使用它们之前定义这些变量。
除此之外,您的脚本存在很多其他问题,第一个和主要问题是update
查询:如果您没有指定where
子句,它将更新< em> all 表格中的现有记录。在关系数据库模式中,每个表必须具有主键(字段或字段组合,唯一且明确地标识单个行)。如果您没有,则必须创建它,然后如果您只想更新一个给定行,则需要在where
子句中使用它。