Я пытаюсь создать графики за последнюю четыре недели из указанного номера недели (неделю за неделей)cursor.fetchall несколько запросов к одному списку
До сих пор я модель и вид работаю отлично, я в состоянии запросить данные из необработанных баз данных кроме того, я знаю, как создать четыре списка из запроса:
results = [i for i in chain.from_iterable(cursor.fetchall())]
[u'AAA', 191L, u'BBB', 21L, u'CCC', 420L, u'DDD', 150L, u'EEE', 759L, u'FFF', 290L, u'GGG', 166L, u'HHH', 8L, u'III', 1147L, u'JJJ', 1427L, u'KKK', 34L, u'LLL', 8L]
[u'AAA', 191L, u'BBB', 21L, u'CCC', 420L, u'DDD', 150L, u'EEE', 759L, u'FFF', 290L, u'GGG', 166L, u'HHH', 8L, u'III', 1147L, u'JJJ', 1427L, u'KKK', 34L, u'LLL', 8L]
[u'AAA', 191L, u'BBB', 21L, u'CCC', 420L, u'DDD', 150L, u'EEE', 759L, u'FFF', 290L, u'GGG', 166L, u'HHH', 8L, u'III', 1147L, u'JJJ', 1427L, u'KKK', 34L, u'LLL', 8L]
[u'AAA', 191L, u'BBB', 21L, u'CCC', 420L, u'DDD', 150L, u'EEE', 759L, u'FFF', 290L, u'GGG', 166L, u'HHH', 8L, u'III', 1147L, u'JJJ', 1427L, u'KKK', 34L, u'LLL', 8L]
, но я до сих пор не удался объединить один список из этих четырех списков, в конце концов, список должен выглядеть как ниже:
[["ZZZ", "AAA", "BBB", "CCC"], ["48", 21, 223, 232], ["47", 334, 343, 232], ["46", 345, 542, 245], ["45", 764, 463, 989]]
Где: ZZZ = Номер недели "48", "47", "46", "45" AAA, BBB, CCC .... = имя из запроса
любое предложение?
мой models.py
def four_weeks(year, week):
end = datetime(year, 1, 1) + relativedelta(weeks=week-1, weekday=SU)
start = end - relativedelta(weeks=4, weekday=MO)
mint, maxt = datetime.min.time(), datetime.max.time()
for dt in rrule(WEEKLY, start, count=4):
yield dt.combine(dt, mint), dt.combine(dt + timedelta(days=6), maxt)
views.py
def WeekCombo(request):
fweeks = []
year = 2013 #this is only for test
week = 48 #in future it will be integrated with form
cursor = connections['mydba'].cursor()
for start, end in four_weeks(year, week):
cursor.execute("SELECT DISTINCT (p.name) AS platform, count(e.id) AS count FROM event e, lu_platform p WHERE e.platform_id = p.id AND e.sourcetype_id = 1 AND e.event_datetime BETWEEN %s AND %s AND e.sender_id NOT IN (759, 73) GROUP BY p.name ORDER BY p.name", [start, end])
results = [i for i in chain.from_iterable(cursor.fetchall())]
fweeks.append(results)
return render_to_response('form.html', {'fweeks': fweeks}, context_instance=RequestContext(request))
Похоже, вы хотите объединить полученные списки. http://stackoverflow.com/questions/1720421/merge-two-lists-in-python –
Не совсем понятно, каков ваш вопрос. Вы хотите объединить результаты в качестве словаря? {'AAA': (17L, 44L, 76L), 'BBB': (21L, 96L, 225L, 304L) ....? – Mzzl
Почему вы не используете модели django? – scriptmonster