Работа с именованными массивами на Python
Задача: получить список портов и их состояний из БД в именованый массив.
Обьявление массива:
res[]
Добавление в массив:
res.append({name:{‘port_id’:port_id,’name’:name,’status’:status}});
Другие функции работы с массивом:
array.typecode — TypeCode символ, использованный при создании массива.
array.itemsize — размер в байтах одного элемента в массиве.
array.append(х) — добавление элемента в конец массива.
array.buffer_info() — кортеж (ячейка памяти, длина). Полезно для низкоуровневых операций.
array.byteswap() — изменить порядок следования байтов в каждом элементе массива. Полезно при чтении данных из файла, написанного на машине с другим порядком байтов.
array.count(х) — возвращает количество вхождений х в массив.
array.extend(iter) — добавление элементов из объекта в массив.
array.frombytes(b) — делает массив array из массива байт. Количество байт должно быть кратно размеру одного элемента в массиве.
array.fromfile(F, N) — читает N элементов из файла и добавляет их в конец массива. Файл должен быть открыт на бинарное чтение. Если доступно меньше N элементов, генерируется исключение EOFError , но элементы, которые были доступны, добавляются в массив.
array.fromlist(список) — добавление элементов из списка.
array.index(х) — номер первого вхождения x в массив.
array.insert(n, х) — включить новый пункт со значением х в массиве перед номером n. Отрицательные значения рассматриваются относительно конца массива.
array.pop(i) — удаляет i-ый элемент из массива и возвращает его. По умолчанию удаляется последний элемент.
array.remove(х) — удалить первое вхождение х из массива.
array.reverse() — обратный порядок элементов в массиве.
array.tobytes() — преобразование к байтам.
array.tofile(f) — запись массива в открытый файл.
array.tolist() — преобразование массива в список.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def GetPortList(conn,device_id): sql="select ports.name,device_status.device_id,device_status.port_id,device_status.param_value from device_status inner join ports on ports.port_id=device_status.port_id where device_status.device_id=%s and device_status.port_id>0"; cursor = conn.cursor(dictionary=True,buffered=True) cursor.execute(sql,[device_id]); row = cursor.fetchone() res=[] while row is not None: name=row["name"]; port_id=row['port_id']; status=row['param_value']; res.append({name:{'port_id':port_id,'name':name,'status':status}}); row = cursor.fetchone() cursor=None return res port_list=GetPortList(connb,row["device_id"]); pprint.pprint(port_list) |
Получится чудный вывод на экран чтото типа:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[{1: {'name': 1, 'port_id': 319, 'status': u'2'}}, {2: {'name': 2, 'port_id': 320, 'status': u'2'}}, {3: {'name': 3, 'port_id': 321, 'status': u'2'}}, {4: {'name': 4, 'port_id': 322, 'status': u'2'}}, {5: {'name': 5, 'port_id': 323, 'status': u'2'}}, {6: {'name': 6, 'port_id': 324, 'status': u'2'}}, {7: {'name': 7, 'port_id': 325, 'status': u'2'}}, {8: {'name': 8, 'port_id': 326, 'status': u'2'}}, {9: {'name': 9, 'port_id': 327, 'status': u'1'}}, {10: {'name': 10, 'port_id': 328, 'status': u'2'}}, {11: {'name': 11, 'port_id': 329, 'status': u'1'}}, {12: {'name': 12, 'port_id': 330, 'status': u'1'}}, {13: {'name': 13, 'port_id': 331, 'status': u'2'}}, {14: {'name': 14, 'port_id': 332, 'status': u'2'}}, {15: {'name': 15, 'port_id': 333, 'status': u'2'}}, {16: {'name': 16, 'port_id': 334, 'status': u'1'}}, {17: {'name': 17, 'port_id': 335, 'status': u'2'}}, {18: {'name': 18, 'port_id': 336, 'status': u'2'}}, {19: {'name': 19, 'port_id': 337, 'status': u'2'}}, {20: {'name': 20, 'port_id': 338, 'status': u'2'}}, {21: {'name': 21, 'port_id': 339, 'status': u'2'}}, {22: {'name': 22, 'port_id': 340, 'status': u'2'}}, {23: {'name': 23, 'port_id': 341, 'status': u'2'}}, {24: {'name': 24, 'port_id': 342, 'status': u'1'}}, {25: {'name': 25, 'port_id': 343, 'status': u'2'}}, {26: {'name': 26, 'port_id': 344, 'status': u'2'}}, {27: {'name': 27, 'port_id': 345, 'status': u'2'}}, {28: {'name': 28, 'port_id': 346, 'status': u'1'}}] |