很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的!

再者,在这里我们是想讲一种方法,python+ mysql存储二进制流的方式

这里用的是Mysqldb,python里面最常用的数据库模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import MySQLdb   
   
class BlobDataTestor:   
    def __init__ (self):   
        self.conn = MySQLdb.connect(host='localhost',user='',passwd='',db='0')   
   
    def __del__ (self):   
        try:   
            self.conn.close()   
        except :   
            pass    
   
   
    def closedb(self):   
        self.conn.close()   
   
    def setup(self):   
        cursor = self.conn.cursor()   
        cursor.execute( """  
            CREATE TABLE IF NOT EXISTS `Dem_Picture` (  
            `ID` int(11) NOT NULL auto_increment,  
            `PicData` mediumblob,  
            PRIMARY KEY (`ID`)  
            ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;  
            """)   
   
   
   
    def teardown(self):   
        cursor = self.conn.cursor()   
        try:   
            cursor.execute( "Drop Table Dem_Picture" )   
        except:   
            pass    
        # self.conn.commit()    
   
    def testRWBlobData(self):    
    # 读取源图片数据                  
        = open"C:\\11.jpg" "rb" )   
        = f.read()   
        f.close()   
   
    # 将图片数据写入表    
        cursor = self.conn.cursor()   
        cursor.execute( "INSERT INTO Dem_Picture (PicData) VALUES (%s)" , (MySQLdb.Binary(b)))   
    # self.conn.commit()    
   
    # 读取表内图片数据,并写入硬盘文件    
        cursor.execute( "SELECT PicData FROM Dem_Picture ORDER BY ID DESC limit 1" )   
        = cursor.fetchone()[0]   
        cursor.close()   
   
        = open"C:\\22.jpg" "wb" )   
        f.write(d)   
        f.close()   
   
# 下面一句的作用是:运行本程序文件时执行什么操作  
if __name__ == "__main__":   
   
    test = BlobDataTestor()   
   
    try:   
        test.setup()   
        test.testRWBlobData()   
        test.teardown()   
    finally:   
        test.closedb()

到这里python mysql存储二进制图片的方法就将完了

python+ mysql存储二进制流的方式的更多相关文章

  1. 【转载】C#将图片以二进制流的方式存入数据库

    在C#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据.此文将介 ...

  2. CEF 自定义用户协议(scheme)实现以二进制流的方式显示图片、视频、音频

    转载:https://www.cnblogs.com/sinceret/p/10417941.html 转载:https://stackoverflow.com/questions/48811756/ ...

  3. mysql 存储二进制数据

    晚上小研究了下MySQL存储于读取二进制数据的功能.关键步骤为以下三点: 最重要的一点:存储二进制数据的表的类型需要是blob类型(按长度不同分为tiny, media, long) 插入二进制数据时 ...

  4. 读取MySQL存储二进制的语音、图片(Blob类型)

    /**   * 下载语音   * Remarks:   * @throws Exception   */ public void downloadYuyin() throws Exception { ...

  5. python django中使用sqlite3数据库 存储二进制数据ByteArray

    在python中使用sqlite3数据库存储二进制流数据ByteArray,在django使用sqlite3数据库时,有时候也要注意最好使用二进制流ByteArray插入字符串. 使用ByteArra ...

  6. Mysql存储之ORM框架SQLAlchemy(一)

    上一篇我们说了mysql存储的原生语句方式,因为原生语句每次写都比较的复杂,所以这里我们说一种引用实体类的方式来操作数据库. 什么是ORM ORM技术:Object-Relational Mappin ...

  7. C#图片转换成二进制流并且保存到sql server数据库

    注意:我要存储文件二进制流的列的类型是text,不是image类型. 我已经实现了从数据库中读取text类型的二进制流,,现在就是不知道怎么存进去. 我的部分关键代码: StreamReader sr ...

  8. Python中对字节流/二进制流的操作:struct

    前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块.查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一 ...

  9. 二进制流BinaryFormatter存储读取数据的细节测试

    二进制流的使用很方便,为了更好的理解应用它,我创建简单对象开始测试它的增加特性和减少特性. [Serializable] class Data----------开始时候的存储对象 { public ...

随机推荐

  1. Linux下实现RAID

    一.实验目的 1.掌握Linux系统下软RAID的实现方法: 2.掌握RAID5的配置过程: 3. 通过实验熟悉RAID.5的特点. 二.实验内容及步骤 1.在VMware中创建一台Linux. 2. ...

  2. 【puppeteer+Node.js安装环境】之WebStorm编辑器运行失败问题:Error: Cannot find module 'puppeteer'并且代码出不来“asnyc”标识以及有红色波浪线解决办法

    现象一: module.js:557     throw err;     ^ Error: Cannot find module 'puppeteer'  at Function.Module._r ...

  3. 【EDAS问题】轻量级EDAS部署hsf服务出现找不到类的解决方案

    本地运行轻量级EDAS调用服务的时候报错如下: 2018-01-08 13:16:58.029 WARN [http-bio-8090-exec-8:t.hsf] [RPC Protocol call ...

  4. bash学习记录

    bash: 管理员:  提示符# 普通用户:提示符$ 环境变量 A=3(变量是指内存空间,A指的是内存空间的名称-变量标示符) PS1  \u@\h:\w\$  \u用户名 \h主机名 \w工作目录的 ...

  5. DBUtils使用详解

    https://blog.csdn.net/samjustin1/article/details/52220423 https://www.cnblogs.com/CQY1183344265/p/58 ...

  6. 10分钟看懂, Java NIO 底层原理

    目录 写在前面 1.1. Java IO读写原理 1.1.1. 内核缓冲与进程缓冲区 1.1.2. java IO读写的底层流程 1.2. 四种主要的IO模型 1.3. 同步阻塞IO(Blocking ...

  7. EF学习和使用(三)Code First

    Code First模式我们称之为"代码优先"模式.从某种角度来看.其实"Code First"和"Model First"区别并非太明显. ...

  8. SecureCRT连接VMWare中Linux

    SecureCRT连接vmvare虚拟机ubuntu的前提条件1.   使用主机可以ping通虚拟机,或虚拟机可以ping通主机2.   虚拟机已经开启ssh服务,可以使用sudo apt-get i ...

  9. DOM相关操作的案例

    1 . 模态框案例 示例 :  打开网页时有一个普通的按钮,点击当前按钮显示一个背景图,中心并弹出一个弹出框,点击X的时候会关闭当前的模态框 <!DOCTYPE html> <htm ...

  10. A. Drazil and Date

    这是codeforces#292 div2 的一道题,因为本人比较水,目前只能做div2了.问题简化版就是: 从 (0,0) 走到 (a, b) ,s 步能不能走完.每次能向上下左右走,且只能走一步. ...