pymysql(part4)--mysql存储图片信息
利用pymysql,在mysql中存储图片信息的案例分析。
案例分析
(将图片存储到数据库,再从数据库中获取出来)
- 存储图片有两种形式:
1.存储图片路径(字符串),占空间小,但是数据容易丢失;
2.存储图片的二进制文件,数据不容易丢失,但占空间大.
在这个案例中,我们在创建表Images,既存储图片路径,又存储图片的二进制文件
注意! 因为图片是二进制文件,所以在用py读写jpg文件时,要用rb和wb.用mysql存储图片数据时,要用BLOB类型字段存储。
首先我们新建一个数据表:
我们看到我们的F:\MyStudio\PythonStudio\goatbishop.project01\image路径下有3张可耐的小白兔图片:
我们利用pymysql将图片数据进mysql:
由于我们的data字段数据较多,在cmd不方便显示(想在cmd里显示也行,cmd大概会崩溃),所以,我们在mysql的官方工具Workbench里看一下:
可以看到,导入数据成功!
那我们怎么获取图片呢?看下面这段代码:
再看一下路径F:\MyStudio\PythonStudio\goatbishop.project01\new_image下有没有我们想要的图片:
有呢!成功!
最后,我们给出将图片导入mysql代码,和导出mysql代码。
导入mysql:
#-*-coding:utf-8-*-
#coding=utf-8
"""
Created on Thu Feb 13 14:59:17 2020@author: goatbishop
"""import pymysql
db = pymysql.connect(host = '127.0.0.1',port = 3306,user = 'root',passwd = '19970928',database = 'stu',charset = 'utf8')
#获取游标对象
cur = db.cursor()for i in range(1,4):image_name = 'IMG%d.jpg' % iimage_path = 'image/%s' % image_namewith open(image_path, "rb") as fd:data = fd.read()try:sql = "insert into Images \values(%s, %s,%s, %s);"cur.execute(sql, [str(i), image_name, image_path, data])db.commit()except Exception as e:db.rollback()print("错误信息: ",e)cur.close()
db.close()
导出mysql:
#-*-coding:utf-8-*-
#coding=utf-8
"""
Created on Thu Feb 13 14:59:17 2020@author: goatbishop
"""import pymysql
db = pymysql.connect(host = '127.0.0.1',port = 3306,user = 'root',passwd = '19970928',database = 'stu',charset = 'utf8')
#获取游标对象
cur = db.cursor()sql = "select * from Images;"cur.execute(sql)
for image in cur.fetchall():with open('new_image/%s' % image[1],'wb') as fd:fd.write(image[3])cur.close()
db.close()
pymysql(part4)--mysql存储图片信息相关推荐
- mysql存储图片_Python
MySQL存储图片的二进制,其字段设置为blob属性,二进制数据 1.连接数据库 import pymysql import sysconn=pymysql.connect(host='localho ...
- 通过PyMySQL连接MySQL
2019独角兽企业重金招聘Python工程师标准>>> 安装PyMySQL 点击开始按钮--运行--输入'cmd'--输入命令'pip install PyMySQL'自动下载安装 ...
- mongoDB存视频和mysql存视频_数据库存储方式:MySQL存储、MONGODB存储、Redis存储、json存储、视频存储、图片存储...
1.mongo存储 导包 开始mongo数据库 import pymongo 链接 db = pymongo.MongoClient()['zhe']['lll'] dicts={ 'name':(变 ...
- 解决mysql存储特殊文字(表情符号)utf8mb4
一.背景 爬取数据过程中,会遇到一些特殊的字符入库出错的问题,比如二进制数据.比如特殊文字(类似QQ表情)等. Siberian Husky fighting 这样的标题,后面就带有一个表情. 在my ...
- 《Python3 网络爬虫开发实战》:关系型数据库 MySQL 存储
关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系,这就需要表与表之 ...
- Tushare简单的数据使用以及mysql存储教程
Tushare简单的数据使用以及mysql存储 本人tushare ID:430903 由于某些特殊的原因,接触到了股票策略量化的那么一个项目,而这需要大量数据的支持.而我第一时间尝试的是爬虫,存在m ...
- pymysql mysql 1064_python使用pymysql操作MySQL错误代码1054和1064处理
Python使用pymysql操作MySQL错误代码1054和1064处理 错误代码1064处理 错误代码1054处理 最近在学习用Python爬虫,需要用到mysql来存储从网络上爬到的数据, 这里 ...
- 浅谈MySQL存储引擎-InnoDBMyISAM
浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...
- mysql配置文件没有spring_spring cloud config使用mysql存储配置文件
spring cloud config使用mysql存储配置文件 1.结构图 2.pom.xml: 4.0.0 com.didispace config-server-db 1.0.0 jar con ...
最新文章
- 通过libjpeg-turbo实现对jpeg图像的解码
- ASP.NET Core 中文文档 第三章 原理(12)托管
- 无线网络渗透测试-使用Wifite破解无线网络
- Android开发之原型图浏览器打开可点击跳转之Google插件之Axure(实际上大部分浏览器都可以安装这个插件)
- ug许可服务器在那个文件里,ug许可证位置在哪_ug许可证文件在哪的图文步骤
- 精通 Pandas · 翻译完成
- 第三阶段 15_JavaWeb基础_JQuery的事件处理
- 「 iOS知识小集 」2018 · 第 38 期
- 微机笔记3——汇编语言程序设计
- 十字消除 - Cocos2d-x 2.0.1
- if 语句错误,提示Conditon is always ‘‘alse‘
- 用大白话聊聊JavaSE -- 自定义注解入门
- 您需要administrator权限才能对此文件进行更改
- win7修改计算机名访问被拒绝访问,今天解答win7无法更改注册表拒绝访问的解决介绍...
- 数字后端物理设计输入文件介绍(.v .sdc .lib/.db .lef .tlef/.tf rc corner .view)
- 谷歌正式发布Android 12,UI更好看,应用更快,打造独属于自己的定制化属性
- DBeaver显示Unknown database错误
- WPF DataGridTable
- 向量代数:向量的内积和外积
- 适合短期内想快速上手数字孪生系统的人使用的数字孪生软件推荐
热门文章
- Matlab-OpenCV-VC-混合编程配置
- 机器学习:防止模型过拟合的方法
- java定义json数组_Java面试题:json该如何定义?json与xml的区别有哪些?
- python自动抠头像图_Python实现AI自动抠图实例解析
- 服务器维护,日志分析常用命令
- 推荐一款ui架构--frozenui
- MySQL8.0 · 优化器新特性 · Cost Model, 直方图及优化器开销优化
- HDU 2546 饭卡(01背包裸题)
- 记录一次centos的双网卡绑定
- SecureCRT登陆Centos 6.4乱码问题