2009-03-03 30 views
2

Oluşturduğum bir programda, sq_listesinin bazen çok büyük bir liste olduğu takip eden sql deyimim var.sqlite sorgusu nasıl daha verimli hale getirilir?

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

Bunu yapmak için pek çok güncelleştirme sorusu içermeyen daha verimli bir yolu var mı?

+0

+1 sorun hakkında düşünme için – Noah

cevap

3

SQL:

update songs set rating='L' where trackid IN (id_list) 

Kodu:

self.cursor.execute("update songs set rating='L' where trackid IN (%s)"%','.join(['?']*len(id_list)), id_list) 
self.db.commit() 

Orada da daha şık, ama en uygun çözüm:

self.cursor.executemany("update songs set rating='L' where trackid=?", id_list) 
self.db.commit() 
+0

ikinci seçenek belirir orijinal poster ile aynı olmak zorundadır. – Karl

+1

Hiç de değil. Döngü yerine, bir sürü var ** çok sayıda ** – vartec

+0

Teşekkürler, senin 1. çözümünü kullandım ve her şey gerektiği gibi çalışıyor. – wodemoneke

İlgili konular