如何使用pysqlite更新SQLite中的列,我首先需要从表中的其他数据中获取条件值?

时间:2017-02-06 18:42:55

标签: python sqlite pysqlite

因此,更新数据库时出现以下问题:

我的表格中有一列我需要基本上分成三列,所以我有以下代码:

with con:
  cur = con.cursor()
  cur.execute('SELECT Column1 FROM MainTable')
  while True row = cur.fetchone() 
    if row == None:
      break 
for line in row: a, b, c= line.split('-') 
  print (b);

例如,它给出了第二列的值。 但是,我需要使用这些值更新第二列,为此我尝试在底部添加以下内容:

cur.execute('UPDATE MainTable SET Col_2 = ?' WHERE Id = 1, (row, Id))

con.commit()

然而,由于某种原因,这并不能很好地运行。

1 个答案:

答案 0 :(得分:0)

要更新特定行,您需要一种识别行的方法。 你似乎有一个" ID"列,所以请与您想要拆分的字符串一起阅读。

SQL语句与没有与Python有关;你在Python中做的是构造一个SQL字符串,然后将其提供给数据库来执行。 (使用? - 样式参数可避免字符串格式化问题和SQL注入攻击;始终将它们用于值。)

cur.execute('SELECT ID, Column1 FROM MainTable')
for id, col1 in cur.fetchall():
    a, b, c = col1.split('-')
    cur.execute('UPDATE MainTable SET ColA = ?, ColB = ?, ColC = ? WHERE ID = ?',
                [a, b, c, id])
con.commit()