【发布时间】:2019-10-26 07:01:19
【问题描述】:
我正在使用瓶子做一个小网络测验。 Web 部件运行良好,我可以显示问题并将答案发布回我的 main.py。当我遍历 POST 数据时,我将元组 (Qn, ans) 附加到 datalist[]。
var no 是每个页面上的第一个问题编号,我以这种方式创建此列表:
datalist=[]
datum=()
for i in range(no,nend):
noQ = "Q"+str(i)
rep = request.POST.get(noQ)
rep= int(rep)
#print (f"{noQ}: {rep}")
datum=(noQ,rep)
datalist.append(datum)
这是第一页的格式:
('Q1', 4) ('Q2', 3) ('Q3', 6)
第二页的数据列表如下所示:
('Q4', 4) ('Q5', 3) ('Q6', 4) 等等
我需要将答案添加到数据库中的表中。 由于我每页显示测验 3 个问题,因此我想一次批量更新表 3 个答案。列名因此递增 Q1、Q2...Qn。 看起来很简单,但是当我把声明放在一起时:
cur.executemany("UPDATE Q_R SET ?=? where id = 1", datalist)
(ID也会改变),我明白了:
sqlite3.OperationalError:靠近“?”:语法错误
我尝试在其中使用一些字符串格式,但它只是在嘲笑我。
cur.executemany("UPDATE Q_R SET %s?=? where id = 1", datalist)
我知道这是为了更新多列,所以我应该有类似的东西:
cur.executemany('UPDATE Q_R SET %s=?, %s=?, %s=? where id=id', what goes here ?)
【问题讨论】:
标签: python-3.x sqlite bottle