首页 > 解决方案 > SQL计算两列数据并更新第三列的值

问题描述

我的目标是在 2 列上计算一些数学,并用 3 列上的结果更新数据库。我正在为数据库使用 SQLITE3。数学目前很简单,因此设法获得以下 SQL UPDATE 函数来更新数据库的 40000 行。随着数学变得越来越复杂,我的目标是在查询两列上的数据库并随后更新第三行之后在 python 中计算数学。更新第三列的最佳方法是什么?如果遍历所有行,SET 函数倾向于使用最后一个循环的值更新整个列。非常感谢...

当前用于更新 ebitev 和 capreturn 列的 SQL 代码,对来自早期列的输入进行了简单的数学运算。

db = SQL("sqlite:///formula.db")

inventories=db.execute("SELECT ticker, ebit, ev, ppnenet, fcf, workingcapital FROM equity")

"""liste=[]"""

for inventory in inventories:
    ebit = inventory["ebit"]
    ev = inventory["ev"]
    ppnenet = inventory["ppnenet"]
    workingcapital = inventory["workingcapital"]
    fcf = inventory["fcf"]

    if ev == 'NULL':
        db.execute("UPDATE equity SET ebitev='NULL'")
    else:
        ebitev = ebit / ev
        """liste.append(ebitev)"""
        db.execute("UPDATE equity SET ebitev=ebit/ev")

    if ppnenet == 'NULL' or workingcapital == 'NULL':
        db.execute("UPDATE equity SET capreturn='NULL'")
    else:
        db.execute("UPDATE equity SET capreturn=ebit/(ppnenet+workingcapital)")

    if fcf == 'NULL':
        db.execute("UPDATE equity SET fcfyield='NULL'")
    elif ev == 'NULL':
        db.execute("UPDATE equity SET fcfyield='NULL'")
    else:
        db.execute("UPDATE equity SET fcfyield=fcf/ev")

标签: pythonsqlite

解决方案


推荐阅读