UPDATE:如何指定列表中的第一项应该用于更新列的第一行,依此类推,直到列表的末尾(它包含列中有行的名称和项数)?
sc_id = 1
for x in generator_list:
c.execute('UPDATE breakdown SET characters = ?
WHERE rowid = sc_id', x)
sc_id += 1
给出错误:sqlite3.OperationalError:没有这样的列:sc_id
前一个问题:为什么当我在SQLite3中executemany
UPDATE
一列时,它将最后一行写入所有行?
我正在使用:
c.executemany('UPDATE breakdown SET characters = ?', generator_list)
generator_list
由以下各项构成:
generator_expression = ((val,) for val in updated_local_sc_char_lists)
generator_list = list(generator_expression)
updated_local_sc_char_lists = ['1-HARPER, RORY, THOMAS', 'AUGUST, THOMAS']
generator_list = [('1-HARPER, RORY, THOMAS',), ('AUGUST, THOMAS',)]
在我执行UPDATE
并选择查询后,它返回:
[('AUGUST, THOMAS',), ('AUGUST, THOMAS',)]
2条答案
按热度按时间6tqwzwtp1#
问题是,您没有在SQL语句中指定WHERE条件。目前您发送了两个更新。第一条语句将所有行更改为
('1-HARPER, RORY, THOMAS',)
,第二条语句将所有行更改为('AUGUST, THOMAS',)
。您需要添加的是指定应该更改哪些行的位置。您可能对每一行都有某种类型的行ID或其他唯一的标识符。如果您告诉我们该标识符,我可以帮助您修改您的SQL语句。
4nkexdtk2#
更新后的问题的答案是将sc_id转换为我传递的另一个参数: