0

一括更新を行う前に、クエリオブジェクトからランダムな行を削除できるかどうか疑問に思いました。

例:

writerRes = self.session.query(table)
writerRes = writerRes.filter(table.userID==3)
-> Delete some of the rows randomly
writerRes.update({"userID": 4})

それを行う簡単な方法はありますか?

4

1 に答える 1

1

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')

...

于 2012-12-21T01:02:17.747 に答える