很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几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. mongodb启动不了:提示错误信息为 child process failed, exited with error number 100

    [启动mongo 副本集错误提示]: [原因分析说明]: 查询很多资料得知由于上次使用了暴力关闭系统或者DB,导致数据文件锁住. [解决办法]: 1.  在 mongo.conf 文件添加一下属性值  ...

  2. linux 安装mongo

    在Linux中安装Mongodb操作说明 MongoDB配置 版本说明:因本机所装Red Hat 为 64位操作系统故本例以64位的MongDB为例.所用版本如下: (1)    Red Hat En ...

  3. EntityFramwork 查询

    EntityFramwork 查询 1.简单查询: SQL: SELECT * FROM [Clients] WHERE Type=1 AND Deleted=0 ORDER BY ID EF: // ...

  4. C#中特性,以及应用场景(收藏链接)

    1:http://www.tracefact.net/CLR-and-Framework/Reflection-Part3.aspx 2:http://www.cnblogs.com/landeanf ...

  5. ArcGIS api for javascript 离线部署

    一.说明: 1.本篇文章以及之后的相关的文章所使用的ArcGIS API for javascript 的版本是3.3.初学者为了学习简单,可以引用在线的 Javascript.但是如果只能连接内网, ...

  6. 动态库对外暴露api的方法

    1 windows的动态库 在要export的函数声明的前面加上__declspec(dllexport)标识这个函数是从该dll中export出来给其它模块使用的. declspec是declare ...

  7. cocos2d-js添加百通广告(通过jsb反射机制)

    1.导入jar包,包括so文件 2.配置AndroidManifest.xml文件,添加: <!-- BDAPPUNIONSDK start --> <activity androi ...

  8. Golang 环境变量及工作区概念

    GOROOT go的安装路径 GOPATH 可以有多个目录,每个目录就是一个工作区,放置源码文件,以及安装后的归档文件和可执行文件: 第一个工作区比较重要,go get会自动从一些主流公用代码仓库下载 ...

  9. Pentaho BIServer Community Edtion 6.1 使用教程 第二篇 迁移元数据 [HSQLDB TO MySQL]

    第一部分  迁移原因 Pentaho BI 社区版服务的很多元数据信息存储在数据库汇总,其默认使用HSQLDB 数据库,即借助它存储自身的资料库,比如 Quartz 调度信息.业务资料库连接信息(数据 ...

  10. 超限学习机 (Extreme Learning Machine, ELM) 学习笔记 (一)

    1. ELM 是什么 ELM的个人理解: 单隐层的前馈人工神经网络,特别之处在于训练权值的算法: 在单隐层的前馈神经网络中,输入层到隐藏层的权值根据某种分布随机赋予,当我们有了输入层到隐藏层的权值之后 ...