Python3瓶SQLite3测验-更新变量列名称和数据列表

时间:2019-06-11 19:44:24

标签: python-3.x sqlite bottle

我正在用Bottle做一些网络测验。 Web部件运行良好,我可以显示问题并将答案发布回main.py。在遍历POST数据时,我将tupple(Qn,ans)附加到datalist []中。

不是每个页面上的第一个问题编号,我以此方式创建此列表:

        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(“更新Q_R SET%s?=?其中id = 1”,数据列表)

我知道这是用于更新多列的,所以我应该以某种方式类似于:

cur.executemany('UPDATE Q_R SET %s=?, %s=?, %s=? where id=id', what goes here ?)

1 个答案:

答案 0 :(得分:0)

答案是在循环期间创建2个元组列表,然后将ID附加在rep_list的末尾。所以代码是这样的:

statement="UPDATE Q_R SET %s=?, %s=?, %s=? where id=?" % tuple(Q_list)
cur.execute(statement, rep_list)

有时候,解释问题正在解决它。感谢您的帮助。