用于表大小或元组大小(物理内存)的django命令?

时间:2011-11-23 14:57:38

标签: python django django-models

我在django,python中创建了一个项目。我想知道Django命令知道我的表的内存大小

4 个答案:

答案 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',)]