• Как сделать срез в Django ORM без all()?

    @dimuska139
    Backend developer
    Если Вы считаете, что из базы в данном случае вытаскиваются все записи, а потом на уровне кода часть из них обрезается, то это не так. all() не делает запрос к базе. Запрос вместе с LIMIT выполняется уже внутри пагинатора.

    Это я к тому, что, скорее всего, Вы увидели, что страница с пагинатором грузится безумно долго и предположили, что из базы выгребаются все записи, но это совсем не так. Долго это выполняется потому, что на таком количестве строк стандартные решения пагинации будут в принципе работать плохо, потому что на "дальних" страницах курсор базы данных будет перебирать все записи, идущие до этой страницы. Кроме того, пагинатор выполняет count-запрос, который выполняется долго, потому что это фулскан всей таблицы, где миллионы записей.
    Ответ написан
    Комментировать
  • Как сделать срез в Django ORM без all()?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Во-первых, вам не нужен all, можно просто

    fooset = barmodel.objects.order_by('-foobar')

    Во-вторых, у класса QuerySet переопределена операция среза, так что fooset[:100] превратиться в select с limit 100.
    Ответ написан
    Комментировать
  • Pyshark: как сериализовать пакет в json?

    @LODIII
    Python/SQL developer
    посмотрел внимательнее на вывод.
    это на 99% типичный yaml файл
    установил Pyaml
    и попробовал
    python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < file.yaml > file.json


    или в интерпретаторе
    import yaml
    
    with open("tshark.yml", 'r') as stream:
        data_loaded = yaml.safe_load(stream)

    сругалась на строчки 15 и 39 что не может map
    убрал в них вторые :
    и все сконвертировалось
    {
        "Packet (Length": "90)",
        "Layer ETH": {
            "Destination": "c4:6e:1f:07:3f:42",
            "Address": "00:0c:29:ef:ff:9c",
            ".... ..0. .... .... .... .... = LG bit": "Globally unique address (factory default)",
            ".... ...0 .... .... .... .... = IG bit": "Individual address (unicast)",
            "Source": "00:0c:29:ef:ff:9c",
            "Type": "IPv4 (0x0800)"
        },
        "Layer IP": {
            "0100 .... = Version": 4,
            ".... 0101 = Header Length": "20 bytes (5)",
            "Differentiated Services Field": 16,
    ...
    Ответ написан
    1 комментарий