How to update a column in SQLite using pysqlite wh

2019-03-03 14:59发布

So, I have the following issue when updating my database:

I have a column in my table that I need to split in three essentially and so I have the following code:

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);

which gives me the values of the second column for instance. However, I need to UPDATE that second column with those values and for this I have tried adding the following at the bottom:

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

con.commit()

However, for some reason this isn't running well.

1条回答
Melony?
2楼-- · 2019-03-03 15:11

To update a specific row, you need a way to identify the row. You appear to have an "ID" column, so read that together with the string you want split.

SQL statements have nothing to do with Python; what you do in Python is to construct an SQL string that you then give to the database to execute. (Using ?-style parameters avoids string formatting problems and SQL injection attacks; always use them for values.)

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()
查看更多
登录 后发表回答