2009-03-03 85 views
2

我在我正在建立的程序中有下面的sql語句,其中id_list有時是一個非常大的列表。如何讓sqlite查詢更有效率?

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

是否有更有效的方法來做到這一點,不涉及如此多的更新查詢?

+0

+1啓發你思考你的問題 – Noah 2011-01-27 19:53:34

回答

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() 
+0

第二個選項出現與原來的海報一樣。 – Karl 2009-03-03 17:39:44