利用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存储图片信息相关推荐

  1. mysql存储图片_Python

    MySQL存储图片的二进制,其字段设置为blob属性,二进制数据 1.连接数据库 import pymysql import sysconn=pymysql.connect(host='localho ...

  2. 通过PyMySQL连接MySQL

    2019独角兽企业重金招聘Python工程师标准>>> 安装PyMySQL 点击开始按钮--运行--输入'cmd'--输入命令'pip install PyMySQL'自动下载安装 ...

  3. mongoDB存视频和mysql存视频_数据库存储方式:MySQL存储、MONGODB存储、Redis存储、json存储、视频存储、图片存储...

    1.mongo存储 导包 开始mongo数据库 import pymongo 链接 db = pymongo.MongoClient()['zhe']['lll'] dicts={ 'name':(变 ...

  4. 解决mysql存储特殊文字(表情符号)utf8mb4

    一.背景 爬取数据过程中,会遇到一些特殊的字符入库出错的问题,比如二进制数据.比如特殊文字(类似QQ表情)等. Siberian Husky fighting 这样的标题,后面就带有一个表情. 在my ...

  5. 《Python3 网络爬虫开发实战》:关系型数据库 MySQL 存储

    关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系,这就需要表与表之 ...

  6. Tushare简单的数据使用以及mysql存储教程

    Tushare简单的数据使用以及mysql存储 本人tushare ID:430903 由于某些特殊的原因,接触到了股票策略量化的那么一个项目,而这需要大量数据的支持.而我第一时间尝试的是爬虫,存在m ...

  7. pymysql mysql 1064_python使用pymysql操作MySQL错误代码1054和1064处理

    Python使用pymysql操作MySQL错误代码1054和1064处理 错误代码1064处理 错误代码1054处理 最近在学习用Python爬虫,需要用到mysql来存储从网络上爬到的数据, 这里 ...

  8. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  9. 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 ...

最新文章

  1. 通过libjpeg-turbo实现对jpeg图像的解码
  2. ASP.NET Core 中文文档 第三章 原理(12)托管
  3. 无线网络渗透测试-使用Wifite破解无线网络
  4. Android开发之原型图浏览器打开可点击跳转之Google插件之Axure(实际上大部分浏览器都可以安装这个插件)
  5. ug许可服务器在那个文件里,ug许可证位置在哪_ug许可证文件在哪的图文步骤
  6. 精通 Pandas · 翻译完成
  7. 第三阶段 15_JavaWeb基础_JQuery的事件处理
  8. 「 iOS知识小集 」2018 · 第 38 期
  9. 微机笔记3——汇编语言程序设计
  10. 十字消除 - Cocos2d-x 2.0.1
  11. if 语句错误,提示Conditon is always ‘‘alse‘
  12. 用大白话聊聊JavaSE -- 自定义注解入门
  13. 您需要administrator权限才能对此文件进行更改
  14. win7修改计算机名访问被拒绝访问,今天解答win7无法更改注册表拒绝访问的解决介绍...
  15. 数字后端物理设计输入文件介绍(.v .sdc .lib/.db .lef .tlef/.tf rc corner .view)
  16. 谷歌正式发布Android 12,UI更好看,应用更快,打造独属于自己的定制化属性
  17. DBeaver显示Unknown database错误
  18. WPF DataGridTable
  19. 向量代数:向量的内积和外积
  20. 适合短期内想快速上手数字孪生系统的人使用的数字孪生软件推荐

热门文章

  1. Matlab-OpenCV-VC-混合编程配置
  2. 机器学习:防止模型过拟合的方法
  3. java定义json数组_Java面试题:json该如何定义?json与xml的区别有哪些?
  4. python自动抠头像图_Python实现AI自动抠图实例解析
  5. 服务器维护,日志分析常用命令
  6. 推荐一款ui架构--frozenui
  7. MySQL8.0 · 优化器新特性 · Cost Model, 直方图及优化器开销优化
  8. HDU 2546 饭卡(01背包裸题)
  9. 记录一次centos的双网卡绑定
  10. SecureCRT登陆Centos 6.4乱码问题