Я создаю 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)