十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)用Python把圖片存入數(shù)據(jù)庫的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站專注于新野網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供新野營銷型網(wǎng)站建設(shè),新野網(wǎng)站制作、新野網(wǎng)頁設(shè)計(jì)、新野網(wǎng)站官網(wǎng)定制、微信平臺(tái)小程序開發(fā)服務(wù),打造新野網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供新野網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
一般情況下我們是把圖片存儲(chǔ)在文件系統(tǒng)中,而只在數(shù)據(jù)庫中存儲(chǔ)文件路徑的,但是有時(shí)候也會(huì)有特殊的需求:把圖片二進(jìn)制存入數(shù)據(jù)庫。
MySQL是支持把圖片存入數(shù)據(jù)庫的,也相應(yīng)的有一個(gè)專門的字段BLOB(Binary Large Object),即較大的二進(jìn)制對(duì)象
還有個(gè)更大的存二進(jìn)制的LONGBLOB;
這里需要注意:盡量把字段設(shè)置大一些,因?yàn)槿绻O(shè)置的字段長度過小,就會(huì)出現(xiàn)圖片只顯示一部分的情況。第二:如果數(shù)據(jù)量大的話盡量避免使用這種方式進(jìn)行,因?yàn)閙ysql對(duì)于大數(shù)據(jù)的查詢速度會(huì)很慢。
1、首先讀取文件,用open()和close()打開和關(guān)閉;
2、接著用connect()創(chuàng)建數(shù)據(jù)庫連接;
3、用Binary()指定存儲(chǔ)的是二進(jìn)制;
4、然后數(shù)據(jù)庫提交,關(guān)閉數(shù)據(jù)庫即可。
下面是具體的代碼:
#!/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()函數(shù)來指定存儲(chǔ)的是二進(jìn)制 cursor.execute("INSERT INTO images SET data='%s'" % mysql.Binary(img)) #如果數(shù)據(jù)庫沒有設(shè)置自動(dòng)提交,這里要提交一下 conn.commit() cursor.close() #關(guān)閉數(shù)據(jù)庫連接 conn.close() except mysql.Error,e: print "Error %d %s" % (e.args[0],e.args[1]) sys.exit(1)
關(guān)于用Python把圖片存入數(shù)據(jù)庫的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。