Sqlite python使用变量更新null列

时间:2016-11-22 04:45:09

标签: python sqlite

python和sqlite的新手,所以我正在尝试更新我的sqlite数据库。

我在填充的行上有x个列,其余的都是null。然后我希望回到这些行并更新我尚未填写的列为null。

如何通过添加尚未输入的新数据来更新行?

我将在下面显示我尝试使用WHERE找到要更新的正确行,并使用SET来设置这些新值。

设置:

    c.execute('CREATE TABLE IF NOT EXISTS PowerSysInfo(time REAL, NumOfNodes INT, NumOfBuses INT, BusLocation TEXT, PhaseNumber INT, v1 REAL, a1 REAL, phase1 INT, v2 REAL, a2 REAL, phase2 INT, v3 REAL, a3 REAL, phase3 INT)')

输入我的行:

                    c.execute("INSERT INTO PowerSysInfo(time, NumOfNodes, NumOfBuses, BusLocation, PhaseNumber, v1, a1, phase1) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ",
                              (mins, numNode, Numbus, bus, numNode, busVoltages[i], busVoltages[i+1], node))
                    conn.commit()

现在,当我尝试使用以下内容更新上述行时

                   c.execute("UPDATE PowerSysInfo SET v2 = ?, a2 = ?, phase2 = ? WHERE time = ?, BusLocation = ?", [busVoltages[i], busVoltages[i+1], node, mins, bus]) 
                   conn.commit()

我得到 OperationalError:near“,”:语法错误

我一直在查看更新语句,找不到一个用变量来完全更新null。但为什么这不起作用?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在要更新的列列表中,条目以逗号分隔。

在WHERE子句中,您必须指定单个表达式,因此使用逗号没有意义。要将两个布尔条件组合成一个更大的布尔条件,请使用AND。