Форматировать большие результаты запроса в python - PullRequest
0 голосов
/ 03 апреля 2020

Вот мой большой запрос:

SELECT datestamp, slot, food, price, menu
        FROM `food_table`
        WHERE datestamp BETWEEN 2020-01-01 AND 2020-01-25

большой запрос дал мне следующий вывод:

Row((datetime.date(2020, 1, 1), 'slot-1', None, None, None), {'datestamp': 0, 'slot': 1, 'food': 2, 'price': 3, 'menu': 4})
Row((datetime.date(2020, 1, 2), 'slot-2', None, None, None), {'datestamp': 0, 'slot': 1, 'food': 2, 'price': 3, 'menu': 4})
Row((datetime.date(2020, 1, 2), 'slot-2', None, None, None), {'datestamp': 0, 'slot': 1, 'food': 2, 'price': 3, 'menu': 4})
Row((datetime.date(2020, 1, 2), 'slot-3', None, None, None), {'datestamp': 0, 'slot': 1, 'food': 2, 'price': 3, 'menu': 4})
Row((datetime.date(2020, 1, 3), 'slot-1', None, None, None), {'datestamp': 0, 'slot': 1, 'food': 2, 'price': 3, 'menu': 4})

До сих пор я делал что-то подобное для форматирования:

report_data = defaultdict(lambda: defaultdict())
 for row in query_job:
     date=row['datestamp']
     report_data[row['slot']][date] = row
 print(report_data)

Но, похоже, это не мой ожидаемый формат. Ожидаемый формат:

{'slot-1': defaultdict(None, {'2020-01-01': {'food': 2, 'price': 3, 'slot': 'slot-1', 'menu': 4, 'date': '2020-01-01'},{'2020-01-03': {'food': 2, 'price': 3, 'slot': 'slot-1', 'menu': 4, 'date': '2020-01-03'}),
{'slot-2': defaultdict(None, {'2020-01-02': {'food': 4, 'price': 6, 'slot': 'slot-2', 'menu': 4, 'date': '2020-01-02'},
{'slot-3': defaultdict(None, {'2020-01-02': {'food': 2, 'price': 3, 'slot': 'slot-2', 'menu': 4, 'date': '2020-01-02'},
...