使用相同的ID更新sqlite3中的多行

2024-09-30 18:28:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更新并替换具有相同ID的表的多行。 原始表格如下所示:

mem_id       + brand         +      type
A              xyz                  123
A              qwe                  423
A              qwe                  210
A              zxc                  145
B              xyz                  789
B              qwe                  564
C              qwe                  124
C              zxc                  326

我想用元组列表的值来更新并替换spcific mem_id“A”的所有行,如下所示:

lists = [('A', 'asd', '435'), ('A', 'wky', '420'), ('A', 'jko', '311')]

我已经实现了以下代码,但它给我带来了一个sqlite3操作错误:

conn = sqlite3.connect('database/u_data.vita')
mycursor = conn.cursor()
mycursor.executemany("UPDATE raw_table SET(brand=?, type=?) WHERE mem_id=?",lists,A)
conn.commit()
conn.close()

我希望输出如下所示:

mem_id       + brand         +      type
A              asd                  435
A              wky                  420
A              jko                  311
B              xyz                  789
B              qwe                  564
C              qwe                  124
C              zxc                  326

谢谢。 任何见解都会有帮助


Tags: idtypeconnmemsqlite3listsbrandxyz
1条回答
网友
1楼 · 发布于 2024-09-30 18:28:12

由于表的现有行与新行之间没有1对1的关系,因此不需要更新表,只需使用mem_id = 'A'删除现有行并从列表中插入新行:

lists = [('A', 'asd', '435'), ('A', 'wky', '420'), ('A', 'jko', '311')]
conn = sqlite3.connect('database/u_data.vita')
mycursor = conn.cursor()
mycursor.execute("DELETE FROM raw_table WHERE mem_id = 'A'")
mycursor.executemany("INSERT INTO raw_table(mem_id, brand, type) VALUES (?, ?, ?)", lists)
conn.commit()
conn.close()

相关问题 更多 >