Pergunta

Tenho a declaração follow sql em um programa que eu estou construindo, onde ID_LIST às vezes é uma lista muito grande.

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

Existe uma maneira mais eficiente de fazer isso que não envolve tantas consultas de atualização?

Foi útil?

Solução

SQL:

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

Código:

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

Há também é mais elegante, mas solução sub-óptima:

self.cursor.executemany("update songs set rating='L' where trackid=?", id_list)
self.db.commit()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top