將numpy 陣列存入mysql中
阿新 • • 發佈:2018-12-11
我們的專案中需要將視訊流傳入神經網路,並將神經網路處理之後的特徵存入mysql資料庫中,在查閱資料後,我發現可以使用如下方法:
首先在資料庫中建表:
create table TESTBLOB(framenum int not null, feature blob not null);
其中framenum代表幀號,features代表256維的特徵向量,使用mysql中的Blob型別
假如我們得到一個特徵向量 feature
入庫:將它轉化為raw data bytes,並存入資料庫
-
bytes_feature = feature.tostring()
-
cursor.execute('insert into TESTBLOB values(%s,%s)',([1,bytes_feature]))
從庫中讀:
-
cursor.execute('select features from TESTBLOB where framenum = %s',([1]))
-
values = cursor.fetchall()
接下來將讀出的值轉為np.array形式
feature = np.frombuffer(values[0][0],dtype=np.float32)
即可重新得到類行為np.array的256維的特徵向量
在這裡要注意入庫時資料的型別,我們的特徵向量都是np.float32型別,在使用np.frombuffer()函式時一定要注意宣告資料型別(dtype=)。這樣才能正確的轉換。