Каков наиболее эффективный способ перебора отношений SQL при форматировании ответа JSON? - PullRequest
0 голосов
/ 19 декабря 2018

Я заметил узкое место в API, над которым я недавно работал, это связано с тем, как форматируется ответ json, особенно с необходимостью перебирать отношения для форматирования ответа.Сам запрос к базе данных занимает ~ 1 с, в то время как форматирование занимает более 20 с для выборки размером 500 записей.

запрос

data = Item.query.limit(500).all()

форматирование

data = [{
        'attributes': {
            'id': item.id,
            [...]
            'approved': item.approved,
        }
        'sizes': [{
            'size': size.size,
            'size_fr': size.size_fr,
            'quantity': size.quantity,
            'available': size.available,
            'out_of_order': size.out_of_order
        } for size in item.sizes],
        'tags': [{
            'tag': tag.tag,
            'tag_fr': tag.tag_fr,
            'id': tag.id
        } for tag in item.tags],
        'images': [{
            'url': image.url,
            'primary': image.primary,
            'background_removed': image.background_removed,
            'id': image.id
        } for image in item.images],
    } for item in data]

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

Я предполагаю, что должен быть более эффективный способ обработки и форматирования данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...