如何将变量分配给从SQL表中提取的值?(Sqlite 3和python)



当前正在开发一个测验,需要从sql数据库表上的问答部分获取随机记录。我的问题是,如何将获取的值分配到变量中,以便我能够将其放置在Tkinter中的小部件中,并使用答案变量与用户输入的答案进行比较?

quizQuestion = cursor.execute("SELECT Question, Answer FROM questionandanswer WHERE Difficulty = 1 ORDER BY RANDOM() LIMIT 1;")

所以我得到了一个问题和答案,但需要将它们分配到两个单独的变量中,quizQuestion和quizAnswer。

感谢

我做了类似的事情,我使用web API获取琐碎的问题,并将它们存储到sqlite3数据库中。

要得到一个特定的问题,你可以简单地使用这个:

cursor.execute("SELECT * FROM QUESTIONS WHERE QUESTION LIKE ?;", (str(question),)).fetchall()

这将返回查询的所有结果的列表,每个结果都将表示为一个元组,并具有您请求的字段,这些字段按您提供的索引排序。

如果你想得到一个随机的问题,如果你添加了一个fetchall()函数调用,你的语法应该可以工作。

如果它仍然不起作用,你可以尝试用一种效率较低的方式来做,只需从数据库中提取所有问题,然后在python中随机选择一个,如果你的数据库不是庞大的,那就不重要了。

现在您可以简单地访问列表中的结果:

# fetch multiple columns:
data = con.execute("SELECT * FROM QUESTIONS;").fetchall()
for entry_tuple in data:
quizQuestion = entry_tuple[0]
quizAnswer = entry_tuple[1]
# Do whatever you want to do with the data
# Or fetch specific column:
data = con.execute("SELECT Question, Answer FROM questionandanswer WHERE Difficulty = 1 ORDER BY RANDOM() LIMIT 1;").fetchall()
question_tuple = data[0]
quizQuestion = question_tuple [0]
quizAnswer = question_tuple [1]

最新更新