Создайте структуру JSON, перенеся строки базы данных в столбец с помощью pyodbc - PullRequest
0 голосов
/ 19 сентября 2019

Я создаю json, как ожидается, как показано ниже:

{
    "diff": [            
        {
            "toys": 250,
            "kitchen": 100,
            "period": "201905",
            "totalamt": 2500  //sum of amount for toys+kitchen for that period
        },
        {
            "toys": 150,
            "kitchen": 50,
            "period": "201906",
            "totalamt": 1700
        }
    ]
}

Структура таблицы и данные в базе данных базы данных такие же, как и ниже (используя то, что выше json необходимо построить):

id  period  category    amt     qty
1   201905  toys        500     250
1   201905  kitchen     2000    100
1   201905  garments    1000    10
1   201906  toys        200     150
1   201906  kitchen     1500    50
1   201904  toys        100     10
1   201904  kitchen     50      3

Примечание: id, startdate, enddate будут приниматься в качестве входных параметров.
У меня проблема
1] при создании словаря (для каждого периода) из нескольких строк дБ, имеющих разные категории (применил фильтрацию в запросе базы данных, чтобы получить только интересующую категорию)
2] получить общее количество для этой категории (за этот период)

Мой код:

import pyodbc
import json
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()

# id, startdate,enddate would be read through url query parameters(for mock build taking hardcoded values)
id = 1
startdate = '201905'
enddate =  '201906'
get_qty = "select period, category,qty from Table where id=? and (period between ? and ?) and category in ('toys','kitchen')"
cursor.execute(get_qty, id, startdate,enddate)
columns = [column[0] for column in cursor.description]
complist = []
for row in cursor:
    complist.append(dict(zip(columns, row)))

print(complist)
...