最近做一些数据库调研的工作,目标是实现影像更快的入库、出库、查询,并实现并行访问等操作。

将结果总结成一个mysqlImg类。

关于mongodb的图像存储,参见http://www.cnblogs.com/bigbigtree/p/3242483.html

关于mysql&python的问题和mysql官方链接python的API总结,参见

http://www.cnblogs.com/bigbigtree/p/3246638.html

http://www.cnblogs.com/bigbigtree/archive/2013/08/08/3246718.html

http://www.cnblogs.com/bigbigtree/archive/2013/08/09/3247477.html

http://www.cnblogs.com/bigbigtree/p/3248126.html

mysqlImg代码如下,

  1. #coding=UTF-8
  2. '''
  3. Created on 2013-8-7
  4.  
  5. @author: tree
  6. '''
  7. __metaclass__ = type
  8.  
  9. import mysql.connector
  10. import os
  11. import time
  12.  
  13. class mysqlImg(object):
  14. """mysqlImg is a class for inserting image
  15. """
  16. def __init__(self):
  17.  
  18. self.__filelist=[]
  19. self.__config = {
  20. 'user':'root',
  21. 'password':'******',
  22. 'host':'localhost',
  23. 'database':'imgdb'}
  24.  
  25. def __dirwalk(self,dir,topdown=True):
  26. """traverse the documents of self.__dir and save in self.__filelist
  27. """
  28. sum=0
  29. self.__filelist.clear()
  30.  
  31. for root,dirs,files in os.walk(dir,topdown):
  32. for name in files:
  33. sum+=1
  34. temp=os.path.join(root,name)
  35. self.__filelist.append(temp)
  36. print(sum)
  37.  
  38. def insertImg(self,imgpath,dbname=None):
  39. """insert images in mysql
  40. """
  41. if dbname != None:
  42. self.__config['database']=dbname
  43.  
  44. self.__dirwalk(imgpath)
  45.  
  46. sum=0
  47. tStart=time.time()
  48.  
  49. self.__cnx=mysql.connector.connect(**self.__config)
  50. cur=self.__cnx.cursor()
  51. cur.execute("DROP TABLE IF EXISTS pyramid")
  52. cur.execute("CREATE TABLE pyramid(IdImg INT(11) PRIMARY KEY AUTO_INCREMENT,\
  53. NameImg VARCHAR(30),\
  54. DataImg LONGBLOB NOT NULL)")
  55.  
  56. try:
  57. for fi in self.__filelist:
  58. sum+=1
  59. print(sum)
  60. myimg = open(fi,'rb')
  61. data=myimg.read()
  62.  
  63. insertString='INSERT INTO pyramid(NameImg,DataImg) VALUES(%s,%s)'
  64. args=(fi,data)
  65. cur.execute(insertString,args)
  66. myimg.close()
  67. finally:
  68. tEnd=time.time()
  69. print ("It cost %f sec" % (tEnd - tStart))
  70. self.__cnx.commit()
  71. self.__cnx.close()
  72.  
  73. #get image by filename
  74. def getbyname(self,filename,savepath):
  75. """get img from mysql by NameImg
  76. """
  77. if len(filename) < 1:
  78. raise TypeError("filename must not be None")
  79. if len(savepath) < 1:
  80. raise TypeError("dir must be an string of directory")
  81.  
  82. self.__cnx=mysql.connector.connect(**self.__config)
  83. cur=self.__cnx.cursor()
  84.  
  85. try:
  86. selectString="SELECT DataImg FROM pyramid WHERE NameImg = %s"
  87. cur.execute(selectString,(filename,))
  88.  
  89. data=cur.fetchone()[0]
  90. imgout=open(savepath,'wb')
  91. imgout.write(data)
  92. finally:
  93. self.__cnx.close()
  94. imgout.close()

mysql python image 图像存储读取的更多相关文章

  1. mongodb python image 图像存储读取

    最近做一些数据库调研的工作,目标是实现影像更快的入库.出库.查询,并实现并行访问等操作. 将结果总结成一个mongoImg类,也算是小结吧. ''' Created on 2013-8-6 class ...

  2. python编码与存储读取数据(数组字典)

    Camp时在python2的编码上坑了不少. 理解pyhon2的编码 python2字符串类型只有两种: str类型:b'xxx'即是str类型, 是编码后的类型,len()按字节计算 unicode ...

  3. Python下opencv使用笔记(一)(图像简单读取、显示与储存)

    写在之前 从去年開始关注python这个软件,途中间间断断看与学过一些关于python的东西.感觉python确实是一个简单优美.easy上手的脚本编程语言,众多的第三方库使得python异常的强大. ...

  4. mysql 数据表操作 存储引擎介绍

    一 什么是存储引擎? 存储引擎就是表的类型. mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制 ...

  5. mysql三-1:理解存储引擎

    一.什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处 ...

  6. MySQL更改数据库数据存储目录

    MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录.下文总结整理了实践过程的操作步骤. 1:确认MySQL数据库存储目 ...

  7. MySQL内核:InnoDB存储引擎 卷1

    MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...

  8. VTK序列图像的读取[转][改]

    医学图像处理的应用程序中,经常会碰到读取一个序列图像的操作.比如CT.MR等所成的图像都是一个切面一个切面地存储的,医学图像处理程序要处理这些数据,第一步当然是把这些数据从磁盘等外部存储介质中导入内存 ...

  9. MySQL中游标使用以及读取文本数据

    原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...

随机推荐

  1. Negative log-likelihood function

    Softmax function Softmax 函数 \(y=[y_1,\cdots,y_m]\) 定义如下: \[y_i=\frac{exp(z_i)}{\sum\limits_{j=1}^m{e ...

  2. HTML5系列一(属性概述)

    HTML5概述 HTML5於2004年被WHATWG(网页超文本技术工作小组)提出,於2007年被W3C接纳 在2008年1月22日,第一份正式草案已公布.WHATWG表示该规范是目前正在进行的工作, ...

  3. 【突发问题】昨天更新了OS X EI Capitan 出现了Cocoapods的 pod :command not found

    然后我百度:http://www.jianshu.com/p/6ff1903c3f11 果真,我想想然后执行了作者说的第一步,删除本地Cocoapods文件,然后发现我执行不了接下来的几个步骤了.所以 ...

  4. cocos2d 2.2.6 win7下的配置

    我搭建cocos2.6的开发环境需要安装工具包括: 1.Visual Studio 2012(由于不兼容win7,需要安装Update 4)和虚拟光驱daemon tool,虚拟光驱的下载地址:htt ...

  5. restClient访问SSL

    IRestClient client = new RestClient("https://xxx.com/aa/bb"); "; ); ServicePointManag ...

  6. ORACLE ORA-01157: 无法标识/锁定数据文件

    create undo tablespace MOZI datafile 'E:\oracle\product\10.2.0\oradata\orcl\MOZI.DBF' size 2048M ext ...

  7. C#----格式化字符串的操作

    class Program { static void Main(string[] args) { //DateTime dt = DateTime.Now; //Console.WriteLine( ...

  8. MySQL笔记-最简单的方法来解决找不到mysqld.sock文件的问题

    首先,环境:ubuntu 14.04,采用apt-get的方式安装的,手动安装可能路径设置稍有区别. 1.安装MySQL后,用命令行首次启动时发现找不到Mysqld.sock文件,提示: ERROR ...

  9. PageBase

    namespace Webform.App { public class PageBase : System.Web.UI.Page { } public interface IService< ...

  10. js中自定义事件,使用了jQuery

    $(function(){ $('#btn').bind("myClick", function(){ //自定义myClick事件 $('#test').append(" ...