如何让sqlite查询更高效?

时间:2009-03-03 17:08:19

标签: sqlite

我在我正在构建的程序中有以下sql语句,其中id_list有时是一个非常大的列表。

for id in id_list:
    self.cursor.execute("""update songs set rating='L' where trackid=?""", (id,))
self.db.commit()

有没有更有效的方法来执行此操作而不涉及如此多的更新查询?

1 个答案:

答案 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()