ビルド中のプログラムでは、次のSQL文があります。id_listは非常に大きなリストになることがあります。どのようにsqliteクエリをより効率的にするには?
for id in id_list:
self.cursor.execute("""update songs set rating='L' where trackid=?""", (id,))
self.db.commit()
非常に多くの更新クエリが含まれていないより効率的な方法がありますか?
ビルド中のプログラムでは、次のSQL文があります。id_listは非常に大きなリストになることがあります。どのようにsqliteクエリをより効率的にするには?
for id in id_list:
self.cursor.execute("""update songs set rating='L' where trackid=?""", (id,))
self.db.commit()
非常に多くの更新クエリが含まれていないより効率的な方法がありますか?
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()
第二のオプションが表示されます元のポスターと同じになるようにしてください。 – Karl
全くありません。 forループの代わりにexcecute ** many ** – vartec
ありがとうございます、私はあなたの第一の解決策を使用し、すべてが正常に動作します。 – wodemoneke
1あなたの問題を考えるために – Noah