是否有可能在sqlite3表中创建一个python变量?

时间:2015-07-07 11:31:36

标签: python sqlite

这是我的简报:

  

老师想要使用学生参加这些测验的结果来记录他们的表现。该   系统应存储每个学生的最后三个分数。老师希望能够输出   特定类的测验结果,排序:

     
      
  • 按字母顺序排列,每位学生的考试成绩最高
  •   
  • 以最高分,从最高到最低
  •   
  • 按平均分,从最高到最低。
  •   
     

详细分析该程序的要求,设计,编码,测试和评估程序   将允许教师选择要查看的班级组以及在排序时使用的字段   输出数据。

我以为我可以这样做,但它不起作用:

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

该表已经制作,所以不是那个

1 个答案:

答案 0 :(得分:1)

您的错误与您的问题标题无关,也与SQL无关。您尝试使用未定义的变量(NameScore2Score3),因此Python会引发NameError异常。您必须在使用它们之前定义这些变量。

除此之外,您的脚本存在很多其他问题,第一个和主要问题是update查询:如果您没有指定where子句,它将更新< em> all 表格中的现有记录。在关系数据库模式中,每个表必须具有主键(字段或字段组合,唯一且明确地标识单个行)。如果您没有,则必须创建它,然后如果您只想更新一个给定行,则需要在where子句中使用它。