MySQL 中Blob型別資料的插入和讀取

2021-09-11 23:37:51 字數 1547 閱讀 1576

在mysql中blob是乙個二進位制的物件,它是乙個可以儲存大量資料的容器(如,**等等),且能容納不同大小的資料,在mysql中有四種blob型別,他們的區別就是可以容納的資訊量不容分別是以下四種:

①tinyblob型別  最大能容納255b的資料

②blob型別  最大能容納65kb的

③mediumblob型別  最大能容納16mb的資料

④longblob型別  最大能容納4gb的資料

而在我們實際使用的時候,可以根據自己的需求選擇這幾種型別,但是如果blob中儲存的檔案的大小過大的話,會導致資料庫的效能很差。下面具體介紹一下插入blob型別的資料以及讀取blob型別的資料的方式:

1、插入blob型別的資料

插入blob型別的資料時,需要注意必須要用preparedstatement,因為blob型別的資料是不能夠用字串來拼的,在傳入了sql語句後,就需要去呼叫preparedstatement物件中的setblob(int index , inputstream in)方法來設定傳入的的引數,其中index表示blob型別的資料所對應的佔位符(?)的位置,而inputstream型別的in表示被插入檔案的節點流。

2、讀取blob型別的資料

讀取blob型別相對來說比較容易,當獲取了查詢的結果集之後,使用getblob()方法讀取到blob物件,然後呼叫blob的getbinarystream()方法得到輸入流,再使用io操作進行檔案的寫入操作即可。

下面是具體例子來實現blob型別資料的插入和讀取操作:

現在本地資料庫中有這樣乙個表animal,其中picture中存放的資料型別為mediumblob型別

貼上自己試驗的**

# 向資料庫插入資料

for i, key in enumerate(list(update_container.keys())):

value = update_container[key].value

value_str = value.tostring()

shape = value.shape

sql = 'insert into face_emb(uid, shape, emb) values (%s, %s, %s)'

test_mysql.executesqlmanybyconn(sql, [key, str(shape[0]), value_str])

# 從資料庫讀取資料,轉換成需要格式

sql = 'select * from face_emb'

s = test_mysql.executesqlbyconn(sql)

print(s)

s1 = s.fetchall()

for i in range(len(s1)):

userid, shape, emb_bytes = s1[i]

tmb_list = np.fromstring(emb_bytes, dtype=np.float32)

emb = tmb_list.reshape(shape, -1)

print(emb.shape)

MySQL中的BLOB型別

blob介紹 blob binary large object 二進位製大物件,是乙個可以儲存二進位制檔案的容器。在計算機中,blob常常是資料庫中用來儲存二進位制檔案的字段型別。blob是一 說法,處理blob的主要思想就是讓檔案處理器 如資料庫管理器 不去理會檔案是什麼,而是關心如何去處理它。但...

MySQL中的BLOB型別

1 mysql有四種blob型別 2 除了型別對後面訪問檔案大小有限制,還要修改mysql的配置檔案。windows linux基本一樣通過修改檔案my.ini或my.cnf檔案,在檔案中增加 max allowed packet 10m 就是最大10m,mysql預設似乎1mb,增加前先查詢一下確...

MySQL中的BLOB型別

blob介紹 blob binary large object 二進位製大物件,是乙個可以儲存二進位制檔案的容器。在計算機中,blob常常是資料庫中用來儲存二進位制檔案的字段型別。blob是一 說法,處理blob的主要思想就是讓檔案處理器 如資料庫管理器 不去理會檔案是什麼,而是關心如何去處理它。但...