MySQLdb-запрос к массиву Numpy

Итак, я пытался следовать. Каков наиболее эффективный способ преобразования набора результатов MySQL в массив NumPy? но у меня все еще есть проблемы.

Мои строки базы данных состоят из 57 целых чисел без знака (Unix epoch plus byte counts для каждого из 28 портов коммутатора, вход и выход).

Мой код выглядит так:

import MySQLdb as mdb import numpy # get the database connector DBconn = mdb.connect('localhost', 'root', '<Password>', 'Monitoring') with DBconn: # prepare a cursor object using cursor() method cursor = DBconn.cursor() # now get the data for the last 10 minutes sql = "select * from LowerSwitchBytes where ComputerTime >= (unix_timestamp(now())-(60*10))" cursor.execute(sql) results = cursor.fetchall() for row in results: print row 

Так что печатает 10 строк, таких как:

 (1378151928L, 615983307L, 517980853L, 25355784L, 117110102L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 267680651L, 288368872L, 84761960L, 337403085L, 224270992L, 335381466L, 27238950843L, 549910918625L, 240002569249L, 11167210734L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 222575491L, 335850213L, 223669465L, 339800088L, 310004136202L, 16635727254L, 0L, 0L, 16590672L, 147102083L, 0L, 0L, 0L, 0L) 

Но когда я меняю:

  results = cursor.fetchall() for row in results: print row 

в

  A = numpy.fromiter(cursor.fetchall(), count=-1, dtype=numpy.uint32) print A 

Я получил:

 Traceback (most recent call last): File "min.py", line 23, in <module> A = numpy.fromiter(cursor.fetchall(), count=-1, dtype=numpy.uint32) ValueError: setting an array element with a sequence. 

Любая идея, что я делаю неправильно?

One Solution collect form web for “MySQLdb-запрос к массиву Numpy”

np.fromiter жалуется, потому что пытается записать полную строку входов в один элемент нового массива. Вы можете обойти это с помощью массивов записей:

 A = numpy.fromiter(cursor.fetchall(), count=-1, dtype=[('', numpy.uint8)]*57) 

Если все ваши записи одного типа, вы можете получить представление массива следующим образом:

 A = A.view(numpy.uint8).reshape(-1, 57) 
  • Построение распределений степеней сети с лог-биндингом
  • Как выполнить логическую операцию и логическую индексацию с помощью VIPS в Python?
  • TypeError: только целые массивы с одним элементом могут быть преобразованы в индекс 3
  • Производительность cpython vs cython vs numpy
  • Что означает «три точки» в Python при индексировании того, что выглядит как число?
  • Преобразование типа места в массиве NumPy
  • Ошибка потока: не удается запустить новую тему
  • Переопределение других __rmul__ с помощью __mul__ вашего класса
  • Python - лучший язык программирования в мире.