有点清晰:截至目前,我已经使用python两周了。我有一项工作分配,用于生成一个脚本,该脚本将读取数据库,执行一些计算,然后使用计算值更新数据库。
我知道如何使用sqlite3执行SQL查询,我知道如何更新表。
目前我使用的是:
c.execute("SELECT x,y,z FROM {tn} "\
.format(tn=Table1, x=column1, y=column2, z= column3))
选择信息。
然后我执行计算,并且可以使用每个变量的单个更新语句来更新表。所以基本上效率很低。
我知道有代码可以轻松地将值插入表中,即:
for t in [(1, 'Tim', 8, 'Mr.Wood'),
(2, 'Aaron', 8, 'Mr.Henderson'),
(2, 'Jane', 10, 'Mr.Wood'),
]:
c.execute('INSERT INTO Table_name VALUES (?,?,?,?)',t)
但是我找不到的是,有没有办法可以将其用于循环和更新表?即读取数据库中的值(列不必彼此相邻)然后执行更新表查询,其结构与上面的for循环类似?
编辑:
我使用词典作为switch / case语句的替代。 我将案例定义为函数,将开关函数定义为' case'定义
对于每种情况,我将从数据库中获取不同的信息,并执行不同的计算。我可以这样做,目前,我每个函数使用两个四个UPDATE语句来使用新的计算值更新数据库。我的问题是:是否可以仅使用一个语句一次更新一个具有多个值的表?
像这样:c.execute("UPDATE table SET 'value' WHERE columnName = {cn}
SET 'value' WHERE ColumnName2 = {cn2}
...
")
答案 0 :(得分:0)
我不确定我完全理解,但我会尽力帮助你。
从DB读取数据后,对于每行数据,执行计算并将数据插入DB。正确?如果是这样,你应该创建一个函数,如下所示:
def update_db_based_on(some_info):
calculated_data = some_calculation(some_info)
insert_to_db(calculated_data)
然后,你可以这样:
for line in data_from_db:
update_db_based_on(line)
这是你的意思吗?