Так что я пытался следовать What's the most efficient way to convert a MySQL result set to a NumPy array?, но у меня все еще есть проблемы.MySQLdb-запрос к массиву Numpy
Мои строки базы данных состоят из 57 целых чисел без знака (Unix-эпоха плюс количество байтов для каждого из 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.
Любая идея, что я делаю неправильно?
Так что в основном работает, но так как они это bigint номера, это numpy.uint32 вместо numpy.uint8 на обеих линиях. Большое спасибо! – wpns