一括更新を行う前に、クエリオブジェクトからランダムな行を削除できるかどうか疑問に思いました。
例:
writerRes = self.session.query(table)
writerRes = writerRes.filter(table.userID==3)
-> Delete some of the rows randomly
writerRes.update({"userID": 4})
それを行う簡単な方法はありますか?
一括更新を行う前に、クエリオブジェクトからランダムな行を削除できるかどうか疑問に思いました。
例:
writerRes = self.session.query(table)
writerRes = writerRes.filter(table.userID==3)
-> Delete some of the rows randomly
writerRes.update({"userID": 4})
それを行う簡単な方法はありますか?
SA でのランダムな行の選択は、データベースによって異なります。その答えに基づいています。
Postgresql と Sqlite3:
number_of_random_rows = 3
rand_rows = session.query(table.userid).order_by(func.random()).limit(number_of_random_rows).subquery()
session.query(table).filter(table.userid.in_(rand_rows)).delete(synchronize_session='fetch')
MySQL:
number_of_random_rows = 3
rand_rows = session.query(table.userid).order_by(func.rand()).limit(number_of_random_rows).subquery()
session.query(table).filter(table.userid.in_(rand_rows)).delete(synchronize_session='fetch')
...