Команда django для размера таблицы или размера кортежа (физической памяти)? - PullRequest
1 голос
/ 23 ноября 2011

Я сделал проект в django, python. Я хотел бы знать команду Django для определения размера моей таблицы

Ответы [ 4 ]

4 голосов
/ 23 ноября 2011

Смешивая оба ответа, вы можете рассчитать размер всей таблицы, рассчитав сначала размер одного объекта вашей модели, а затем умножив его на количество объектов в вашей таблице:

$ 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)
0 голосов
/ 14 апреля 2019
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 МБ',)]

0 голосов
/ 23 ноября 2011

Просто посмотрите здесь

sys.getsizeof (object [, default]):

Возвращает размер объекта в байтах. Объект может быть любого типа объект. Все встроенные объекты будут возвращать правильные результаты, но это не должно распространяться на сторонние расширения, как это конкретная реализация.

Аргумент по умолчанию позволяет определить значение, которое будет возвращено если тип объекта не предоставляет средства для получения размера и может вызвать ошибку TypeError.

getsizeof вызывает метод sizeof объекта и добавляет дополнительный издержки сборщика мусора, если объект управляется мусором коллектор.

Я не уверен на 100%, если это то, что вы ищете. Django - это фреймворк Python, поэтому, я думаю, вы на самом деле ищете не siezof в Django, а в самом Python.

Более того, я не уверен, для чего вам это нужно. Вы встречаете какую-то конкретную проблему? Или ты хочешь это знать вообще?

0 голосов
/ 23 ноября 2011

Вы имеете в виду таблицу базы данных?

для модели MyModel Вы можете спросить

MyModel.objects.count()
...