我有一个看起来像这样的表:

Column1    |  Column2 | Column3
sky        |  blah    | Null
giraffe    |  blah    | Null
apple      |  blah    | value


和2个清单:

List1 = [sky, gold, giraffe]
List2 = [blue, yellow, tall]


我希望将Column1中的某些值与List1中的值进行匹配,并更新使用List2中的值找到的Column3行。 List1和List2项具有相同的索引以相互匹配,因此sky的匹配值为蓝色,等等。因此,如果字段为Null,则我尝试在Colum3的“ sky”行中插入“ blue”。

最整洁的方法是什么?

最佳答案

只需从每个列表中获取条目,然后尝试对每个这样的对进行更新:

for name, value in zip(List1, List2):
    cursor.execute('''UPDATE MyTable
                      SET Column3 = ?
                      WHERE Column1 = ?
                        AND Column3 IS NULL''',
                   (value, name))


这可以进一步简化:

cursor.executemany('''UPDATE MyTable
                      SET Column3 = ?
                      WHERE Column1 = ?
                        AND Column3 IS NULL''',
                   zip(List2, List1))

关于python - 更新列表中的匹配行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42445947/

10-11 20:31