【发布时间】:2019-08-11 03:47:43
【问题描述】:
我查看了许多与此问题类似的来源,但似乎无法找到解决我问题的答案。
我使用 python3.7.1 和 sqlite3 来创建测验。我有一系列问题,我已使用以下代码示例插入到表格中,并带有“Class_name”和“quizNumber”:
quizQuestion = ['1 + 1 =', '2 + 2 =', '3 + 3 =',...]
quizNumber = (1)
quizClass = ('6D')
for question in quizQuestions:
cursor.execute( "INSERT INTO set_questionsTbl (QuizNumber, Class_name, Question) VALUES (?,?,?)", (quizNumber,quizClass,question))
这段代码运行良好,表格(set_questionsTbl)如下所示:
QuizNumber | Class_name | Question | Answer
-------------------------------------------
1 | 6D | 1 + 1 = |
1 | 6D | 2 + 2 = |
1 | 6D | 3 + 3 = |
etc..
我也有很多答案:
quizAnswers = [2,4,6,...]
出现的问题是尝试使用答案更新表格时,它看起来像这样:
QuizNumber | Class_name | Question | Answer
-------------------------------------------
1 | 6D | 1 + 1 = | 2
1 | 6D | 2 + 2 = | 4
1 | 6D | 3 + 3 = | 6
etc...
我试过的代码是这样的:
for answer in quizAnswers:
cursor.execute("UPDATE set_questionsTbl SET Answer = (?) ", (answer,))
这并没有像每个循环一样工作,之前输入的答案被覆盖了,留下了这个:
QuizNumber | Class_name | Question | Answer
-------------------------------------------
1 | 6D | 1 + 1 = | 6
1 | 6D | 2 + 2 = | 6
1 | 6D | 3 + 3 = | 6
etc...
我也尝试将循环连接在一起,但这不起作用,表格看起来像:
QuizNumber | Class_name | Question | Answer
-------------------------------------------
1 | 6D | 1 + 1 = | 2
1 | 6D | 2 + 2 = | 2
1 | 6D | 3 + 3 = | 2
1 | 6D | 1 + 1 = | 4
1 | 6D | 2 + 2 = | 4
1 | 6D | 3 + 3 = | 4
1 | 6D | 1 + 1 = | 6
1 | 6D | 2 + 2 = | 6
1 | 6D | 3 + 3 = | 6
我已多次尝试更正此问题并搜索了许多不同的示例,但似乎无法找到解决方案。那么如何循环遍历每个问题并使用 quizAnswers 中的每个答案更新答案?
我是堆栈溢出的新手,所以我可能错过了类似的问题,如果是,请链接它。
【问题讨论】:
-
请查看WHERE clauses。正如答案所暗示的那样,您不一定需要唯一的 ID,只要您可以提出一组标准,可以单独或共同识别您希望语句影响的记录。在您的情况下,
QuizNumber、Class_name和Question的组合可以作为这样的集合。
标签: python python-3.x for-loop sqlite