1. 程式人生 > >將numpy 陣列存入mysql中

將numpy 陣列存入mysql中

    我們的專案中需要將視訊流傳入神經網路,並將神經網路處理之後的特徵存入mysql資料庫中,在查閱資料後,我發現可以使用如下方法:

    首先在資料庫中建表:

create table TESTBLOB(framenum int not null, feature blob not null);

    其中framenum代表幀號,features代表256維的特徵向量,使用mysql中的Blob型別

    假如我們得到一個特徵向量 feature

    入庫:將它轉化為raw data bytes,並存入資料庫

  1. bytes_feature = feature.tostring()

  2. cursor.execute('insert into TESTBLOB values(%s,%s)',([1,bytes_feature]))    

    從庫中讀:

  1. cursor.execute('select features from TESTBLOB where framenum = %s',([1]))

  2. values = cursor.fetchall()

    接下來將讀出的值轉為np.array形式

feature = np.frombuffer(values[0][0],dtype=np.float32)

    即可重新得到類行為np.array的256維的特徵向量

    在這裡要注意入庫時資料的型別,我們的特徵向量都是np.float32型別,在使用np.frombuffer()函式時一定要注意宣告資料型別(dtype=)。這樣才能正確的轉換。