更新具有特定ID的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新具有特定ID的行相关的知识,希望对你有一定的参考价值。

id是我的Sqlite表的第一列。

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

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

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

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

  • 显然* = ?可能是不正确的,如何修改这个?
  • 此外,在查询结束时使用where id = ?应该期望将id作为row的最后一个元素,但是,它是row的第一个元素(因为,仍然,row元素使用与数据库本身相同的列顺序,并且id是第一个柱)。
答案

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

例如对于定义的表: -

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。但是,这需要更复杂的代码来提取列名。

以上是关于更新具有特定ID的行的主要内容,如果未能解决你的问题,请参考以下文章

获取具有与特定模式匹配的连接列的行

选择具有最大 ID 和特定条件的行

sql 插入具有特定主ID的行

聚合具有特定值的两行之间的行

SQL 聚合具有相同 id 的行,辅助列中的特定值

获取具有特定数量的重复值的行