我正在尝试创建一个基于Tkinter的修订应用程序,它有各种学习选项,如抽认卡和考试风格的问题模拟器。对于考试问题,用户答对的每个问题,一个新的分数和时间戳将被添加到一个名为“分数”的SQLite数据库中,即在列INT“phy”和DATETIME“phystamp”中。通过将20加到“phy”中的先前记录来更新得分,并将其时间戳添加到“phystamp”列的同一行中。然而,这个程序似乎不工作,因为记录似乎没有成功插入到数据库中。运行代码时,我没有收到任何错误。
任何其他结构化代码的方法也会有所帮助,因为我最近才开始使用python和SQL进行编码。
if realanswer == data[randomphysics][2]:
cursor.execute("""SELECT phy FROM scores WHERE phy=(SELECT max(phy) FROM scores)""")
lastrecord = cursor.fetchone()
num = int(''.join(map(str, lastrecord)))
newrecord = num + 20
dt = datetime.now()
physicstime = dt.strftime("%Y-%m-%d %H:%M:%S")
decisionlabel.config(text="Correct Answer!")
cursor.execute("INSERT INTO scores(phy,phystamp)VALUES(?,?)",(newrecord,physicstime))
print(physicstime)
else:
decisionlabel.config(text=f"Incorrect Answer! The correct answer is {data[randomphysics][2]}")
1条答案
按热度按时间xfb7svmp1#
是的,如果你写一个插入语句,SQLite将隐式地打开一个事务,你需要显式地关闭它来修改数据库。所以只要在你的cursor.execute(...)后面跟着一个connection.commit()。