SQL计算两列数据并更新第三列的值

时间:2018-11-26 19:44:08

标签: python sqlite

我的目标是在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")

0 个答案:

没有答案