【问题标题】:Sqlite python update null columns with variablesSqlite python用变量更新空列
【发布时间】:2016-11-22 16:55:32
【问题描述】:

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

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

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

我将在下面显示我已尝试使用 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 的语句。但是为什么这不起作用呢?

提前感谢您的帮助。

【问题讨论】:

标签: python sqlite


【解决方案1】:

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

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

【讨论】:

  • 非常感谢
  • 那么满足 where 条件在 SQLite 中被视为布尔值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
  • 2020-11-29
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
相关资源
最近更新 更多