MySQLdb操作mysql的blob值


一般情況下我們是把圖片存儲在文件系統中,而只在數據庫中存儲文件路徑的,但是有時候也會有特殊的需求:把圖片二進制存入數據庫。

今天我們采用的是python+mysql的方式

MYSQL 是支持把圖片存入數據庫的,也相應的有一個專門的字段 BLOB (Binary Large Object),即較大的二進制對象

還有個更大的存二進制的LONGBLOB;

這里需要注意:盡量把字段設置大一些,因為如果設置的字段長度過小,就會出現圖片只顯示一部分的情況。第二:如果數據量大的話盡量避免使用這種方式進行,因為mysql對於大數據的查詢速度會很慢。

下面上代碼:

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
#!/usr/bin/python
#-*- coding: UTF-8 -*-
  
import  MySQLdb as mysql
import  sys
try :
     #讀取圖片文件
     fp  =  open ( "./test.jpg" )
     img  =  fp.read()
     fp.close()
except  IOError,e:
     print  "Error %d %s"  %  (e.args[ 0 ],e.args[ 1 ])
     sys.exit( 1 )
try :
     #mysql連接
     conn  =  mysql.connect(host = 'localhost' ,user = 'root' ,passwd = '123456' ,db = 'test' )
     cursor  =  conn.cursor()
     #注意使用Binary()函數來指定存儲的是二進制
     cursor.execute( "INSERT INTO images SET data='%s'"  %  mysql.Binary(img))
     #如果數據庫沒有設置自動提交,這里要提交一下
     conn.commit()
     cursor.close()
     #關閉數據庫連接
     conn.close()
except  mysql.Error,e:
     print  "Error %d %s"  %  (e.args[ 0 ],e.args[ 1 ])
     sys.exit( 1 )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM