Python 用于表大小或元组大小(物理内存)的django命令?
我用python的django做了一个项目。我想知道django命令,知道我的表的内存大小是多少 对于型号Python 用于表大小或元组大小(物理内存)的django命令?,python,django,django-models,Python,Django,Django Models,我用python的django做了一个项目。我想知道django命令,知道我的表的内存大小是多少 对于型号MyModel,您可以询问 MyModel.objects.count() 看看 sys.getsizeof(对象[,默认]): 返回对象的大小(以字节为单位)。对象可以是任何类型的对象 对象所有内置对象都将返回正确的结果,但是 对于第三方扩展,它不一定是真的 具体实施 默认参数允许定义将返回的值 如果对象类型不提供检索大小和 会导致打字错误 getsizeof调用对象的sizeof方法,
MyModel
,您可以询问
MyModel.objects.count()
看看
sys.getsizeof(对象[,默认]):
返回对象的大小(以字节为单位)。对象可以是任何类型的对象
对象所有内置对象都将返回正确的结果,但是
对于第三方扩展,它不一定是真的
具体实施
默认参数允许定义将返回的值
如果对象类型不提供检索大小和
会导致打字错误
getsizeof调用对象的sizeof方法,并添加额外的
如果对象由垃圾收集器管理,则垃圾收集器开销
收藏家
我不能百分之百确定这是否是你想要的。Django是一个Python框架,所以我想您实际上不是在Django中搜索siezof
,而是在Python本身中搜索
此外,我不知道你需要它做什么。你有什么特别的问题吗?或者您想知道它的一般情况吗?混合这两种答案,您可以计算整个表格的大小,首先计算模型中单个对象的大小,然后将其与表格中的对象数相乘:
$ 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)
e、 g.>>[('7403 MB',)]count给出表的长度,但我需要表的最大大小应该是MyModel.objects.all().count(),它给出模型中元组的数量这到底意味着什么?表的“内存大小”可能是多少?DBMS负责存储数据,并确定其中有多少存储在磁盘上,以及有多少缓存在内存中。为什么Django(或你)应该知道或关心?
from django.db import connection
with connection.cursor() as c:
c.execute("SELECT pg_size_pretty(pg_total_relation_size('my_table'))")
c.fetchall()