视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
python+mysql存储二进制流的方式
2020-11-27 14:28:20 责编:小采
文档


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

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

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

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): 
 # 读取源图片数据 
 f = open( "C:\11.jpg" , "rb" ) 
 b = 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" ) 
 d = cursor.fetchone()[0] 
 cursor.close() 
 
 f = 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存储二进制图片的方法就将完了

下载本文
显示全文
专题