我在我正在构建的程序中有以下sql语句,其中id_list有时是一个非常大的列表。
for id in id_list:
self.cursor.execute("""update songs set rating='L' where trackid=?""", (id,))
self.db.commit()
有没有更有效的方法来执行此操作而不涉及如此多的更新查询?
答案 0 :(得分:3)
SQL:
update songs set rating='L' where trackid IN (id_list)
代码:
self.cursor.execute("update songs set rating='L' where trackid IN (%s)"%','.join(['?']*len(id_list)), id_list)
self.db.commit()
还有更优雅但不太理想的解决方案:
self.cursor.executemany("update songs set rating='L' where trackid=?", id_list)
self.db.commit()