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 回答