更新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()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!