store numpy array in mysql

8.7k views Asked by At

My use case is simple, i have performed some kind of operation on image and the resulting feature vector is a numpy object of shape rowX1000(what i mean to say is that the row number can be variable but column number is always 1000)

I want to store this numpy array in mysql. No kind of operation is to be performed on this array. The query will be simple given a image name return the whole feature vector. so is there any way in which the array can be stored (something like a magic container which encapsulates the array and then put it on the table and on retrieval it retrieves the magic container and pops out the array)

I want to do this in python. If possible support with a short code snippit of how to put the data in the mysql database.

2

There are 2 answers

1
paddyg On BEST ANSWER

You could use ndarray.dumps() to pickle it to a string then write it to a BLOB field? Recover it using numpy.loads()

1
dontloo On

You can also serialize it using numpy.getbuffer and numpy.frombuffer to make it independent of pickle, like

bf = np.getbuffer(np.ones((2,3), dtype=np.float32))
# store and read ...
np.frombuffer(bf, dtype=np.float32).reshape(2,3)

only you have to record the shape of the array as well if necessary.