Python:使用SQL查询和嵌套for循环来读取数据并将数据重新插入数据库?

时间:2016-04-22 08:08:30

标签: python database sqlite

有点清晰:截至目前,我已经使用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}
                        ...
                       ")

1 个答案:

答案 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) 
这是你的意思吗?