完整攻略分为以下几个步骤:
1.建立数据库连接
首先需要在Python环境中安装并导入PyMySQL库,用于连接MySQL数据库。然后使用connect()方法建立与数据库服务器的连接,即
import pymysql
db = pymysql.connect(host="localhost",user="root",password="root",database="test",port=3306)
其中,host和port分别指定数据库服务器的IP地址和端口号;user和password是连接数据库所需的用户名和密码;database是需要连接的数据库。
2.创建数据表
在连接成功后,需通过Python操作MySQL创建存储图片的数据表。例如,创建名为images
的数据表,表结构如下:
CREATE TABLE images (
id INT(11) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
image LONGBLOB NOT NULL
);
其中,id
字段是主键,name
字段用于记录图片名称,image
字段用于存储图片的二进制数据。
3.存储图片
上传图片时,需要将图片二进制数据存储到数据库的image
字段中。假设想要上传名为test.png
的图片,如下所示:
with open("test.png", "rb") as f:
image_data = f.read()
cursor = db.cursor()
insert_sql = "insert into images(id, name, image) values (%s, %s, %s)"
cursor.execute(insert_sql, (1, "test", image_data))
db.commit()
cursor.close()
在上传时,首先使用open
方法打开需要上传的图片,使用read
方法读取其二进制数据。使用cursor
方法创建一个MySQL游标,再使用execute
方法执行插入SQL语句,将图片数据插入到数据库中。最后使用commit
方法提交事务,并关闭MySQL游标。
4.显示图片
在需要显示图片时,可以将图片二进制数据从数据库中读取出来,保存到本地,再通过HTML代码在页面中显示。如下所示:
cursor = db.cursor()
select_sql = "select image from images where name = %s"
cursor.execute(select_sql, ("test",))
result = cursor.fetchone()
with open("test2.png", "wb") as f:
f.write(result[0])
cursor.close()
在查询时,使用execute
方法执行查询SQL语句,将需要查询的图片条件作为参数,并使用fetchone
方法获取查询结果。将图片二进制数据保存到本地,并通过HTML代码进行显示。
<img src="test2.png">
完整的代码示例可以查看如下两个代码块:
上传图片:
import pymysql
db = pymysql.connect(host="localhost",user="root",password="root",database="test",port=3306)
with open("test.png", "rb") as f:
image_data = f.read()
cursor = db.cursor()
insert_sql = "insert into images(id, name, image) values (%s, %s, %s)"
cursor.execute(insert_sql, (1, "test", image_data))
db.commit()
cursor.close()
db.close()
显示图片:
import pymysql
db = pymysql.connect(host="localhost",user="root",password="root",database="test",port=3306)
cursor = db.cursor()
select_sql = "select image from images where name = %s"
cursor.execute(select_sql, ("test",))
result = cursor.fetchone()
with open("test2.png", "wb") as f:
f.write(result[0])
cursor.close()
db.close()
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3.x如何向mysql存储图片并显示 - Python技术站