乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python 用mysql存取圖片二進(jìn)制數(shù)據(jù)

       java_laq小館 2014-08-04

      實(shí)例7、把圖片用二進(jìn)制存入MYSQL
      有人喜歡把圖片存入MYSQL(這種做法貌似很少吧),我看大部 分的程序,圖片都是存放在服務(wù)器上的文件,數(shù)據(jù)庫中存的只是圖片的地址而已,不過MYSQL是支持把圖片存入數(shù)據(jù)庫的,也相應(yīng)的有一個專門的字段BLOB (Binary Large Object),即較大的二進(jìn)制對象字段,請看如下程序,注意測試圖片自己隨便找一個,地址要正確:

      首先,在數(shù)據(jù)庫中創(chuàng)建一個表,用于存放圖片:

      復(fù)制代碼 代碼如下:

      CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);

      然后運(yùn)行如下PYTHON代碼進(jìn)行:

      復(fù)制代碼 代碼如下:

      # -*- coding: UTF-8 -*-
      # 來源:瘋狂的螞蟻的博客總結(jié)整理
      import MySQLdb as mdb
      import sys

      try:
          #用讀文件模式打開圖片
          fin = open("../web.jpg")
          #將文本讀入img對象中
          img = fin.read()
          #關(guān)閉文件
          fin.close()

      except IOError, e:
          #如果出錯,打印錯誤信息
          print "Error %d: %s" % (e.args[0],e.args[1])
          sys.exit(1)

      try:
          #鏈接mysql,獲取對象
          conn = mdb.connect(host='localhost',user='root',passwd='root', db='test')
          #獲取執(zhí)行cursor
          cursor = conn.cursor()
          #直接將數(shù)據(jù)作為字符串,插入數(shù)據(jù)庫
          cursor.execute("INSERT INTO Images SET Data='%s'" % mdb.escape_string(img))

          #提交數(shù)據(jù)
          conn.commit()

          #提交之后,再關(guān)閉cursor和鏈接
          cursor.close()
          conn.close()

      except mdb.Error, e:
          #若出現(xiàn)異常,打印信息
          print "Error %d: %s" % (e.args[0],e.args[1])
          sys.exit(1)

        
          結(jié)果:



      escape_string函數(shù)將插入數(shù)據(jù)庫的字符串進(jìn)行轉(zhuǎn)義,這會指一些SQL注入的攻擊

      實(shí)例8、從數(shù)據(jù)庫中把圖片讀出來

      復(fù)制代碼 代碼如下:

      # -*- coding: UTF-8 -*-
      # 來源:瘋狂的螞蟻的博客總結(jié)整理
      import MySQLdb as mdb
      import sys

      try:
          #連接mysql,獲取連接的對象
          conn = mdb.connect('localhost', 'root', 'root', 'test');

          cursor = conn.cursor()

          #執(zhí)行查詢該圖片字段的SQL
          cursor.execute("SELECT Data FROM Images LIMIT 1")

          #使用二進(jìn)制寫文件的方法,打開一個圖片文件,若不存在則自動創(chuàng)建
          fout = open('image.png','wb')
          #直接將數(shù)據(jù)如文件
          fout.write(cursor.fetchone()[0])
          #關(guān)閉寫入的文件
          fout.close()

          #釋放查詢數(shù)據(jù)的資源
          cursor.close()
          conn.close()

      except IOError, e:
          #捕獲IO的異常 ,主要是文件寫入會發(fā)生錯誤
          print "Error %d: %s" % (e.args[0],e.args[1])
          sys.exit(1)

      --------------------------------------------------------------------------------------

      實(shí)例9、使用Transaction即事務(wù)(手動提交,自動回滾)

         

      復(fù)制代碼 代碼如下:

      # -*- coding: UTF-8 -*-
      # 來源:瘋狂的螞蟻的博客總結(jié)整理
      import MySQLdb as mdb
      import sys

      try:
          #連接mysql,獲取連接的對象
          conn = mdb.connect('localhost', 'root', 'root', 'test');

          cursor = conn.cursor()
          #如果某個數(shù)據(jù)庫支持事務(wù),會自動開啟
          #這里用的是MYSQL,所以會自動開啟事務(wù)(若是MYISM引擎則不會)
          cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",
              ("Leo Tolstoy", "1"))
          cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",
              ("Boris Pasternak", "2"))
          cursor.execute("UPDATE Writer SET Name = %s WHERE Id = %s",
              ("Leonid Leonov", "3"))  

          #事務(wù)的特性1、原子性的手動提交
          conn.commit()

          cursor.close()
          conn.close()

      except mdb.Error, e:
          #如果出現(xiàn)了錯誤,那么可以回滾,就是上面的三條語句要么執(zhí)行,要么都不執(zhí)行
          conn.rollback()
          print "Error %d: %s" % (e.args[0],e.args[1])
       --------------------------------------------------------------------------------------

      來自:http://www.jb51.net/article/34102.htm

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多