Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于表大小或元组大小(物理内存)的django命令?_Python_Django_Django Models - Fatal编程技术网

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

Python 用于表大小或元组大小(物理内存)的django命令?,python,django,django-models,Python,Django,Django Models,我用python的django做了一个项目。我想知道django命令,知道我的表的内存大小是多少 对于型号MyModel,您可以询问 MyModel.objects.count() 看看 sys.getsizeof(对象[,默认]): 返回对象的大小(以字节为单位)。对象可以是任何类型的对象 对象所有内置对象都将返回正确的结果,但是 对于第三方扩展,它不一定是真的 具体实施 默认参数允许定义将返回的值 如果对象类型不提供检索大小和 会导致打字错误 getsizeof调用对象的sizeof方法,

我用python的django做了一个项目。我想知道django命令,知道我的表的内存大小是多少

对于型号
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()