Django - дампданные усекаются до последних n строк - PullRequest
3 голосов
/ 30 августа 2010

Есть ли у кого-нибудь простое решение использовать (или модифицировать) dumpdata, чтобы перенести простую таблицу до последних n строк Мне нравится использовать данные дампа для тестовых приборов, но размер данных стал настолько большим, что это не имеет смысла. Кстати, я не проектировал стол, я просто присоска, которая имеет дело с ним.

Для тех, кто может спросить, как выглядит структура здесь.

Со стороны Джанго

class GridResourceUsage(models.Model):
    """Sampled point in time of license usage for individual grid resource. Includes who and quanity."""
    timestamp = models.DateTimeField(db_index=True)
    grid_license_resource = models.ForeignKey(GridLicResource)
    total    = models.IntegerField(default=None, null=True)
    limit    = models.IntegerField(default=None, null=True)
    free     = models.IntegerField(default=None, null=True)
    intern   = models.IntegerField(default=None, null=True)
    extern   = models.IntegerField(default=None, null=True)
    waiting  = models.IntegerField(default=None, null=True)
    def __unicode__(self):
        return str("GRU-" + self.grid_license_resource.name) 
    class Meta:
        ordering = ['-timestamp']
    @models.permalink
    def get_absolute_url(self):
        return('hist_res_id', (), {'resource': str(self.grid_license_resource.name), 'id':str(self.id)})

Со стороны MySQL

CREATE TABLE `gridresource_gridresourceusage` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `timestamp` datetime NOT NULL,
  `grid_license_resource_id` int(11) NOT NULL,
  `total` int(11) DEFAULT NULL,
  `limit` int(11) DEFAULT NULL,
  `free` int(11) DEFAULT NULL,
  `intern` int(11) DEFAULT NULL,
  `extern` int(11) DEFAULT NULL,
  `waiting` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `gridresource_gridresourceusage_timestamp` (`timestamp`),
  KEY `gridresource_gridresourceusage_grid_license_resource_id` (`grid_license_resource_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2891167 DEFAULT CHARSET=latin1;

1 Ответ

4 голосов
/ 30 августа 2010

Я не уверен, что dumpdata может сделать то, что вы просите.

Разве вы не можете просто создать набор запросов и сериализовать это?Немного глупый пример, но он должен работать.

# Create queryset you want
n = SomeModel.objects.count()-1 # Row offset counting from the end
queryset = SomeModel.objects.all()[n:]

# Serialize that queryset to json in this case
from django.core import serializers
data = serializers.serialize("json", queryset)

# And write it into the file
f = open('data.json', 'w')
f.write(data)
f.close()

Вы можете заключить это в команду управления и использовать его более или менее так же, как и команду dumpdata.(Вы также можете посмотреть на источник dumpdata для идей)

...