Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字典列表更新表_Python_Sqlite - Fatal编程技术网

Python 使用字典列表更新表

Python 使用字典列表更新表,python,sqlite,Python,Sqlite,我有一个dict列表,这实际上是我之前选择的结果,我已将其转换为dict(这样我可以编辑某些列的值): 现在我想把我的更改写回我的sqlite表,我明显的选择是尝试一个update语句,但我在尝试构造它时失败得很惨(缺乏知识) 这可能吗?或者我应该考虑另一种方法,例如插入临时表等?数据库适配器采用:keyname格式的命名参数。与此结合使用,您可以将词典列表转换为一系列UPDATE语句: sql_update = ('''\ UPDATE table_a SET value1 = :va

我有一个dict列表,这实际上是我之前选择的结果,我已将其转换为dict(这样我可以编辑某些列的值):

现在我想把我的更改写回我的sqlite表,我明显的选择是尝试一个update语句,但我在尝试构造它时失败得很惨(缺乏知识)


这可能吗?或者我应该考虑另一种方法,例如插入临时表等?

数据库适配器采用
:keyname
格式的命名参数。与此结合使用,您可以将词典列表转换为一系列
UPDATE
语句:

sql_update = ('''\
    UPDATE table_a SET value1 = :value1, value2 = :value2
    WHERE key1 = :key1 and key2 = :key2''')
self.dbcur.executemany(sql_update, dictrows)
对于
dictrows
列表中的每个字典,查询将字典中的键
value1
value2
key1
key2
作为SQL参数,并执行
UPDATE
语句

当然,您必须使用字典中的实际键名

sql_update = ('UPDATE table_a SET value1 = ?, value2 = ? WHERE key1 = ? and key2 =?')
self.dbcur.execute(sql_update, dictrows)
self.dbcon.commit()
sql_update = ('''\
    UPDATE table_a SET value1 = :value1, value2 = :value2
    WHERE key1 = :key1 and key2 = :key2''')
self.dbcur.executemany(sql_update, dictrows)