我认为这个问题重复了,但我听不懂其他答案...
NAME AGE SMOKE
John 25 None
Alice 23 None
Ken 26 None
我将更新这些行中的SMOKE
列,
但是我需要使用在python check_smoke()
中编码的函数的输出。如果我向check_smoke()
输入名称,则它将返回{{1} }或"Smoke"
。
所以最终表如下所示:
"Not Smoke"
我正在使用sqlite3和python3。 我该怎么做?谢谢您的帮助!
答案 0 :(得分:0)
您可以使用1个游标选择行,然后使用另一个游标进行更新。
假设表名是smk(用您的真实姓名代替),并且con
是与数据库的已建立连接,则可以执行以下操作:
curs = con.cursor()
curs2 = con.cursor()
batch = 64 # size of a batch of records
curs.execute("SELECT DISTINCT name FROM smk")
while True:
names = curs.fetchmany(batch) # extract a bunch of rows
if len(names) == 0: break
curs2.executemany('UPDATE smk SET smoke=? WHERE name=?', # and update them
[(check_smoke(name[0]), name[0]) for name in names])
con.commit()