import MySQLdb, sys ... result = [] try: cur.execute("SELECT time, zone, num, class FROM calls001 WHERE oper = %s" % (oper)) calls = cur.fetchall() for call in calls: cur.execute("SELECT zone_name FROM zones WHERE zone_id = %s" % (calls[1])) zones = cur.fetchall() for zone in zones: result.append({'time': calls[0], 'zone_id': calls[1], 'num': calls[2], 'class': calls[3], 'name': zones[0]}) except MySQLdb.Error, e: print "Ошибка %d: %s" % (e.args[0], e.args[1]) print "Ничего не найдено"
В питоне новичек.
Второй вопрос (самое главное для меня и непонятное!):
Вот создаю я список словарей из данных. Теперь мне нужно из него создать новый словарь сгруппированый по определенному ключу. Т.е. должен получиться словарь, в котором данные будут сгруппированы по <zone_id>, примерно так (не знаю как это будет выглядеть в питоне):
4342: {'time': 23, 'num': 4951234565, 'class': 3, 'name': 'Moscow'}, {'time': 11, 'num': 4959829011, 'class': 2, 'name': 'Moscow'}, {'time': 120, 'num': 4997892677, 'class': 1, 'name': 'Moscow'}
затем идет для следующей zone_id:
67999: {'time': 5, 'num': 8469901234, 'class': 1, 'name': 'Samara'}, {'time': 19, 'num': 8469909283, 'class': 1, 'name': 'Samara'}, {'time': 349, 'num': 8469908922, 'class': 3, 'name': 'Samara'}, {'time': 4, 'num': 8469909911, 'class': 3, 'name': 'Samara'}, {'time': 15, 'num': 8469901412, 'class': 3, 'name': 'Samara'}
Как получить такой словарь?
если группировать так:
for i in result: grouped[i['zone_id']] = {'time': i['time'], 'num': i['num'], 'class': i['class'], 'name': i['name']}
то получается, что да, группируется по zone_id, но в словарь попадает лишь одна запись, относящаяся к этой zone_id, а не все, который к ней относятся.
Суть задачи состоит в том, чтобы мне потом посчитать количество минут для определенных телефонных направлений и положить данные в файл (zone_id => кол-во_минут). В PHP я это мог сделать с легкостью, но решил пересаживаться на Python и как-то пока что не идет. Понимаю, что PHP меня избаловал своей простотой
Помогите пожалуйста разобраться.