我有一个看起来像这样的表:
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项目具有相同的索引以相互匹配,因此天空的匹配值为蓝色等。所以我试图在Colum3中插入'blue',如果该字段为Null,则在'sky'行中插入。
最好的方法是什么?
答案 0 :(得分:2)
只需从每个列表中获取条目,并尝试对每个这样的对进行更新:
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))
答案 1 :(得分:0)
只是答案的一部分,但可能是一个有用的开始。
使用pandas将两个列表放入数据库中与另一个表的表中。然后编写一些sql来进行实际更新。
如果我想这样做,我会回到这里。
>>> import pandas as pd
>>> List1 = ['sky', 'gold', 'giraffe']
>>> List2 = ['blue', 'yellow', 'tall']
>>> df = pd.DataFrame({'List1': List1, 'List2': List2})
>>> df
List1 List2
0 sky blue
1 gold yellow
2 giraffe tall
>>> import sqlite3
>>> conn = sqlite3.connect('c:/scratch/temp.sqlite')
>>> df.to_sql('Lists',conn)
完成我的回答:
update temp
set column3 = (select List2
from Lists
where List1 = temp.Column1)
where Column3 is null