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()