更新mysql數據庫的blob類型字段內容


1.首先對於blob類型做一個說明:

對於mysql或者mariadb有4個可選的blob類型:

tinyblob:最大存儲數據的長度為255字節

blob:最大存儲的數據長度為65535字節,也就是65Kb

mediumblob:最大存儲的數據長度為16777215字節,也就是16Mb

longblob:最大存儲的數據長度為4,294,967,295(232 - 1)字節,也就是4Gb

2. blob類型的用途

通常這種類型的字段用於存儲二進制文件,例如 圖片、視頻、音頻、文檔等

3. 向數據庫的blob字段中插入數據,並查詢

# -*- coding:utf-8 -*-
import mariadb
# 連接數據庫
conn = mariadb.connect(
  user="mysql",  # 數據庫賬號
  password="passwd",  #數據庫密碼
  host="192.168.1.101",  # 數據庫主機名或IP地址
  database = "employee",   #指定數據庫(可選)
  port=3306, #端口
  autocommit = True  # DB更新操作是否自動commit(可選參數)
  )
# 打開圖片文件
with open('C:\\Users\\xiaoming\\Desktop\\100001.jpg', 'rb') as file:
    fp = file.read()
# 定義sql的插入語句
sql_insert = '''INSERT INTO staff (uid, name, photo) values(?,?,?)'''
values = [('100001','小明',fp)]
# 打開數據庫游標
cur = conn.cursor()
# 執行sql語句,進行插入數據
cur.executemany(sql_insert,values) #執行SQL語句

# 定義數據庫查詢語句
sql_select = '''select photo from staff where uid=\'100001\';'''
# 執行sql語句
cur.execute(sql_select)
# 讀取查詢數據
photo_data = cur.fetchall()
print(type(photo_data))
#關閉數據庫連接
conn.close()

插入數據后,還可以使用數據庫客戶端工具進行查看,比如DBeaver

  4. 更新數據庫中的blob類型的字段內容

對於update操作,是比較特殊的,如果直接通過類似 UPDATE  staff   SET  photo=b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x....   WHERE  uid='100001';的更新語句,會報語法錯誤。

對於更新操作,可以采用如下的方式:

# -*- coding:utf-8 -*-
import mariadb
# 連接數據庫
conn = mariadb.connect(
  user="mysql",  # 數據庫賬號
  password="passwd",  #數據庫密碼
  host="192.168.1.101",  # 數據庫主機名或IP地址
  database = "employee",   #指定數據庫(可選)
  port=3306, #端口
  autocommit = True  # DB更新操作是否自動commit(可選參數)
  )
# 打開圖片文件
with open('C:\\Users\\xiaoming\\Desktop\\100001_1.jpg', 'rb') as file:
    fp = file.read()
# 定義sql的插入語句
sql_update = '''update staff set photo=%s where uid=\'100001\';'''
args = (fp)
# 打開數據庫游標
cur = conn.cursor()
# 執行sql語句,進行插入數據
cur.execute(sql_update,args) #執行SQL語句
#關閉數據庫連接
conn.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM