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);
回报: -
即您要提取名称列。
您可能感兴趣的 - PRAGMA Statements
另一种方法是从sqlite_master中提取create sql。但是,这需要更复杂的代码来提取列名。