我在django,python中创建了一个项目。我想知道Django命令知道我的表的内存大小
答案 0 :(得分:4)
混合两个答案,您可以计算整个表格的大小,首先计算模型中单个对象的大小,然后将其乘以表格中的对象数量:
$ python manage.py shell
>>> import sys
>>> from myapp.models import MyModel
>>> my_model = MyModel()
>>> total_size = sys.getsizeof(my_model) * MyModel.objects.count()
这可行,但我认为正确的做法是使用数据库计算表的大小。例如,如果您使用PostgreSQL,则只需执行以下操作:
SELECT pg_database_size('myapp_mymodel');
pg_database_size
------------------
63287944
(1 row)
答案 1 :(得分:0)
你的意思是数据库表吗?
对于模型MyModel
,您可以询问
MyModel.objects.count()
答案 2 :(得分:0)
看看here
sys.getsizeof(object [,default]):
以字节为单位返回对象的大小。对象可以是任何类型的 宾语。所有内置对象都将返回正确的结果,但这样 并不一定适用于第三方扩展 具体实施。
默认参数允许定义将返回的值 如果对象类型没有提供检索大小的方法 会导致TypeError。
getsizeof调用对象的 sizeof 方法并添加一个额外的 如果对象由垃圾管理,则垃圾收集器开销 收集器。
我不是100%确定你是否正在寻找。 Django是一个Python框架,所以我猜你实际上并不是在Django中搜索siezof
,而是在Python本身中搜索。
而且,我不确定你需要它。你是否遇到了一些具体问题?或者你想知道它一般吗?
答案 3 :(得分:0)
from django.db import connection
with connection.cursor() as c:
c.execute("SELECT pg_size_pretty(pg_total_relation_size('my_table'))")
c.fetchall()
例如>> [('7403 MB',)]