Python3连接MySQL存储与读取图片完整指南

周末不加班
周末不加班
发布时间:2026-10-12| 3人浏览过
原创

本文详解如何使用Python3和pymysql库将图片以二进制形式存入MySQL数据库并读取显示。涵盖建立连接、创建游标、处理二进制文件及解决Unicode编码错误的完整流程,提供代码示例与权限配置建议。

Python3向MySQL存储图片并显示

本文档主要介绍如何通过Python与数据库建立连接,并将图片数据存入数据库的方法。

首先,确保数据库已创建。接着打开命令行(CMD),输入ipconfig命令以查看本机的IP地址信息。


关键在于获取本机的IP地址,以便后续进行数据库连接配置。

接下来需要在MySQL中创建数据表并设置相应字段,具体建表代码如下:

create table image(id int(5)auto_increment primary key,image1 mediumblob)

随后启动Python开发环境,本文示例使用PyCharm作为编辑器。

代码中需要导入pymysql包以支持数据库操作。

将待存储的图片文件拖入PyCharm项目目录,并设定好文件名以便后续调用。首先以二进制读取模式('rb')打开图片文件。

f = open('2.jpg','rb')
img = f.read()
f.close()

接下来建立与MySQL数据库的连接:

gao = pymysql.connect(
                       host='157.142.13.27',#本机或其他机器的ip地址
                       port=3306,#接口
                       user='root',#用户名
                       passwd='******',#密码
                       db='gao',#你所使用的数据库
                       charset='utf8',#编码方式
                       use_unicode=True, )

使用cursor函数创建游标对象:

g = gao.cursor()

读取图片文件的具体内容。

f = open('2.jpg','rb')data = f.read()

利用execute函数执行数据库修改操作:

g.execute('insert into image(image1) values (%s)'%data)

注意:若遇到连接无权限的错误,需登录MySQL数据库,进入目标数据库后执行修改host的操作:

update user set host = '%' where user = 'root';mysql>flush rivileges

务必在操作结束时关闭游标和数据库连接,以释放资源。

完成后,可在数据库中查看表内容。由于直接显示二进制数据,界面可能呈现乱码。此时可在PyCharm环境中通过代码解析并显示图片。

Python将图片导入MySQL数据库

# 今天需要用Python实现将图片导入MySQL数据库。看了看网上的一些写法,自己也过一遍,记录下来,以防忘记。
 
# 功能:将图片导入到MySQL数据库
import sys
import pymysql
from PIL import Image
import os
 
path = "./"
 
#读取图片文件
fp = open("./陈丹江-420381198212068517.JPG", 'rb')
img = fp.read()
fp.close()
 
#建立一个MySQL连接
database = pymysql.connect(host="10.31.143.6", user="root", passwd="******", db="aaa", charset='utf8')
# 存入图片
# 创建游标
cursor = database.cursor()
#注意使用Binary()函数来指定存储的是二进制
sql = "INSERT INTO vbp_person_ext (person_id, image, img_type) VALUES  (%s, %s, %s);"
args = ('39', img, 'JPG')
cursor.execute(sql, args)
 
database.commit()
# 关闭游标
cursor.close()
# 关闭数据库连接
database.close()
print("============")
print("Done! ")

示例数据库表vbp_person_ext包含三个字段:person_id、image(存储图片信息)和img_type。

操作过程中可能遇到的问题

常见报错信息如下:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 303-304: ordinal not in range(256)

解决方法:在数据库连接参数中增加charset='utf8'以指定编码方式。

总结

以上为个人实践经验总结,希望能提供参考,欢迎支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。