六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 28|回复: 0

mysql处理存储二进制图片

[复制链接]

升级  32.67%

25

主题

25

主题

25

主题

秀才

Rank: 2

积分
99
 楼主| 发表于 2013-1-26 14:32:14 | 显示全部楼层 |阅读模式
关键字:mysql;图片数据导入表

参考url:http://xiaolin0199.iteye.com/blog/585519

  • import MySQLdb  
  •   
  • class BlobDataTestor:  
  •     def __init__ (self):  
  •         self.conn = MySQLdb.connect(host='localhost',user='<your user>',passwd='<your pw>',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() 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表