Python连接Mysql数据库,读写数据库中图片

您所在的位置:网站首页 flask数据库保存图片路径 Python连接Mysql数据库,读写数据库中图片

Python连接Mysql数据库,读写数据库中图片

2024-07-14 21:54| 来源: 网络整理| 查看: 265

本文使用到的pymysql为1.0.2版本

 在IDEA中配置Python参考本人写的另一篇文章http://t.csdn.cn/OHCRC

第一步:安装PyMySQL

PyMySQL用于 python连接到MySQL数据库服务器,在IDEA中安装PyMySQL如下图所示。

在终端中输入命令:pip3 install PyMySQL

 第二步:连接数据库

1.打开数据库连接,使用方法pymysql.connect()

2.使用cursor()方法创建游标对象 

3.使用游标对象 . execute()方法执行SQL语句 

4.关闭数据库连接 ,关闭游标

以下代码修改connect中的内容即可直接运行

import pymysql db = pymysql.connect(host='',#数据库所在地IP地址,本机默认localhost即可 user='',#数据库的用户名 password='',#用户密码 database='')#数据库的名称,不是数据库中表的名称 cursor = db.cursor()#创建一个游标对象 cursor.execute("SELECT VERSION()")# 执行 SQL 语句,查询数据库版本,返回一条数据 data = cursor.fetchone()# 使用 fetchone() 方法获取上面查询后返回的单条数据. print ("Database version : %s " % data) db.close()# 关闭数据库连接 cursor.close()#关闭游标对象  第三步:向数据库中存入图片

1.打开图片,读取图片数据

2.使用游标对象 . execute()方法执行SQL语句插入图片数据

打开图片时,如果使用open('lucy.jpg')方式打开,而不在参数中添加'rb',则在执行SQL语句时,要将图片的数据使用escape_string方法进行转义,在pymysql1.0版本以上时,语句为:pymysql.converters.escape_string()

不推荐使用这种转义的方法,这种方法还需要在open函数中添加另一个参数encoding='ISO-8859-1',否则图片数据写入数据库时,会报错gbk格式或是其他格式无法解释图片数据。即使是添加了这个encoding参数,写入的数据也无法直接读取出来,读取出来会显示图片格式错误或格式不支持

import pymysql db = pymysql.connect(host='', user='', password='', database='') #打开我目录下名为'lucy.jpg'图片 with open('lucy.jpg', 'rb') as f: img = f.read() cursor = db.cursor()#创建一个游标对象 #使用游标对象执行插入图片数据的sql语句 sql="INSERT INTO Images (Data) VALUES (%s)" cursor.execute(sql ,img) db.commit()#提交插入请求 db.close()# 关闭数据库连接 cursor.close()#关闭游标对象 第四步:从数据库中读取图片

1. execute()方法执行SQL语句读回图片数据

2. 使用fetchone()方法将图片数据写入一个文件

fetchone()也是游标对象的一个方法,该方法获取单条数据,获取下一个查询结果集,返回元组,cursor.fetchone()[0]即为提取第一个元素

import pymysql db = pymysql.connect(host='', user='', password='', database='') #打开我目录下名为'lucy.jpg'图片 with open('lucy.jpg', 'rb') as f: img = f.read() cursor = db.cursor()#创建一个游标对象 cursor.execute("SELECT Data FROM Images LIMIT 1")#提取数据库第一行数据 res = cursor.fetchone()[0] with open('lc2.jpg', 'wb') as f: f.write(res) db.close()# 关闭数据库连接 cursor.close()#关闭游标对象 附:读写图片代码及效果 import pymysql db = pymysql.connect(host='', user='', password='', database='',) with open('lucy.jpg', 'rb') as f: img = f.read() cursor = db.cursor() sql="INSERT INTO Images (Data) VALUES (%s)" cursor.execute(sql ,img) db.commit() cursor.execute("SELECT Data FROM Images LIMIT 1") res = cursor.fetchone()[0] with open('lc2.jpg', 'wb') as f: f.write(res) # 关闭数据库连接和游标连接 cursor.close() db.close()



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3