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存储二进制图片的方法就将完了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值