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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM