Frage

Ich habe die Folge SQL-Anweisung in einem Programm, das ich baue, wo ID_LIST manchmal ist eine sehr große Liste.

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

Gibt es eine effizientere Art und Weise, dies zu tun, die nicht so viele Aktualisierungsabfragen beinhalten nicht?

War es hilfreich?

Lösung

SQL:

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

Code:

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

Es gibt auch eleganten, aber suboptimale Lösung:

self.cursor.executemany("update songs set rating='L' where trackid=?", id_list)
self.db.commit()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top