我有一个我想每天更新的SQL表。有关需要更新的记录的数据将作为文本文件从Web中提取。我有一个Python脚本,它将读取数据,并找出需要更新的记录。
鉴于可能每天都有大量可以更新的记录,我想做类似以下的事情:
with get_connection_to('Database') as connection:
cursor = connection.cursor()
cursor.executemany(query, data)
该方法的问题在于任何字段都可能是NULL
\ None
所以,如果我使用像
这样的查询UPDATE TableName
SET Active = 0
WHERE Field1 = ?
AND Field2 = ?
AND Field3 = ?
AND Field4 = ?
AND Field5 = ?
然后,任何包含NULL
值的记录都不会更新。
到目前为止,我提出的最好的想法是遍历每一行,检查每个元素,专门为每个更新构造SQL查询,然后分别执行每个事务。这感觉就像是一个非常不优雅,缓慢解决问题的方法。
有没有人有更好的解决方案?
答案 0 :(得分:2)
UPDATE TableName
SET Active = 0
WHERE NULLIF(?,Field1) IS NULL
AND NULLIF(?,Field2) IS NULL
AND NULLIF(?,Field3) IS NULL
AND NULLIF(?,Field4) IS NULL
AND NULLIF(?,Field5) IS NULL