• python+ mysql存储二进制流的方式


    很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几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存储二进制图片的方法就将完了

  • 相关阅读:
    4G(LTE)背后的技术和利益纠结——VoIP,VoLTE,SIP,IMS的前世今生
    Windows抓取本地回环数据包
    SIP中的早期媒体与回铃音的产生
    SpringMVC整合
    浮点数转换为十进制
    将Sublime Text 2搭建成一个好用的IDE
    python3 'gbk' codec can't decode byte 0x80 in position 读取文件编码集错误的一个bug
    Matplotlib入门教程
    turtle教程-Python绘图
    python画图模块之一:turtle(1) 画五角星、正方形等
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/6596346.html
Copyright © 2020-2023  润新知