如何获得数据库上的查询集估计大小?

How to get a queryset estimated size on the DB?

我 运行 每个月都会进行一次清理,从数据库中删除不需要的旧对象。有没有办法估计从清理过程中获得的文件大小?

我正在使用 sqlite3 和 PostgreSQL 数据库,但当然首选独立于数据库的解决方案。

看起来一个好的估计是转到查询集中的每个对象,遍历 __dict__ 值,然后对每个对象调用 __sizeof__

假设查询集是qs:

total_est_size = sum([v.__sizeof__() for rec in qs for v in rec.__dict__.values()])

当然,这是一个非常基本的估计,没有考虑很多复杂的实现。