更新具有特定ID的行

时间:2018-02-28 16:11:36

标签: python sql sqlite sql-update

id是我的Sqlite表的第一列。

row是包含更新内容的列表或元组,列的顺序与数据库中的顺序相同。

如何使用以下命令执行更新命令:

c.execute('update mytable set * = ? where id = ?', row)

没有对所有列名称进行硬编码?(我正处于原型设计阶段,这通常会发生变化,这就是为什么我现在不想对列名进行硬编码)。

  • 显然* = ?可能不正确,如何修改?

  • 此外,在查询结尾处where id = ? 应该期望id作为{{1>的 last 元素但是,它是row的第一个元素(因为,row元素仍使用与数据库本身相同的列顺序,而row是第一列。

1 个答案:

答案 0 :(得分:0)

您可以使用 table_info PRAGMA 提取列名称。这将按顺序列出列名。然后,您可以在部分中构建语句,最后将它们组合在一起。

e.g。对于使用以下内容定义的表: -

CREATE TABLE "DATA" ("idx" TEXT,"status" INTEGER,"unit_val" TEXT DEFAULT (null) );

然后

PRAGMA table_info (data);

返回: -

enter image description here

即。您想要提取名称列。

您可能对 - PRAGMA Statements

感兴趣

另一种方法是从sqlite_master中提取create sql。但是,这需要更复杂的代码来提取列名。