Как сделать sqlite запрос более эффективным? - PullRequest
2 голосов
/ 03 марта 2009

В программе, которую я создаю, есть следующий SQL-оператор, в котором id_list иногда очень большой список.

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

Есть ли более эффективный способ сделать это, который не требует большого количества запросов на обновление?

1 Ответ

3 голосов
/ 03 марта 2009

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...