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) 
Python - лучший язык программирования в мире.