这个代码错在哪里?得不到正确结果

import sqlite3
db=sqlite3.connect("mrsoft.db")
cursor=db.cursor()
cursor.execute('select * from cj')
result1=cursor.fetchall()
sql="update cj set total=?"
for i in result1:
t=sum(i[1],i[2],i[3])
cursor.execute(sql,(t,))
print(i[0],i[4],t)
cursor.close()
db.commit()
db.close()

除了楼上说的问题,
where 语句呢? 全表都改成一样的数据?
一般来说, 如果第一列是ID
逻辑上应该是类似这种形式

for i in result1:
    t=sum(i[1],i[2],i[3])
    sql="update cj set total={} where id = {}".format(t,i[0])
    cursor.execute(sql)

如果是为了循环更新记录,这样处理应该可以。

cursor.execute('select xm,chinese,math,english from cj')
result1 = cursor.fetchall()
for i in result1:
    t = sum(i[1], i[2], i[3])
    sql = "update cj set total={} where xm='{}'".format(t, i[0])
    cursor.execute(sql)
    print('更新', i[0], t)
db.commit()
print("重新读取数据")
cursor.execute('select xm,chinese,math,english,total from cj')
result1 = cursor.fetchall()
for i in result1:
    print(i[0], i[4])
cursor.close()
db.close()

你应该先执行update,后查询啊,怎么没改先查呢

如果你只是为了更新 total , 那倒简单


import sqlite3
db=sqlite3.connect("mrsoft.db")
cursor=db.cursor()
cursor.execute('update cj set  total = chinese+math+english')
db.commit()
cursor.execute('select xm,chinese,math,english,total from cj')
result1=cursor.fetchall()
for i in result1:
    print(i[0],i[4])
cursor.close()
db.close()