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

将结果总结成一个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代码如下,

 #coding=UTF-8
'''
Created on 2013-8-7 @author: tree
'''
__metaclass__ = type import mysql.connector
import os
import time class mysqlImg(object):
"""mysqlImg is a class for inserting image
"""
def __init__(self): self.__filelist=[]
self.__config = {
'user':'root',
'password':'******',
'host':'localhost',
'database':'imgdb'} def __dirwalk(self,dir,topdown=True):
"""traverse the documents of self.__dir and save in self.__filelist
"""
sum=0
self.__filelist.clear() for root,dirs,files in os.walk(dir,topdown):
for name in files:
sum+=1
temp=os.path.join(root,name)
self.__filelist.append(temp)
print(sum) def insertImg(self,imgpath,dbname=None):
"""insert images in mysql
"""
if dbname != None:
self.__config['database']=dbname self.__dirwalk(imgpath) sum=0
tStart=time.time() self.__cnx=mysql.connector.connect(**self.__config)
cur=self.__cnx.cursor()
cur.execute("DROP TABLE IF EXISTS pyramid")
cur.execute("CREATE TABLE pyramid(IdImg INT(11) PRIMARY KEY AUTO_INCREMENT,\
NameImg VARCHAR(30),\
DataImg LONGBLOB NOT NULL)") try:
for fi in self.__filelist:
sum+=1
print(sum)
myimg = open(fi,'rb')
data=myimg.read() insertString='INSERT INTO pyramid(NameImg,DataImg) VALUES(%s,%s)'
args=(fi,data)
cur.execute(insertString,args)
myimg.close()
finally:
tEnd=time.time()
print ("It cost %f sec" % (tEnd - tStart))
self.__cnx.commit()
self.__cnx.close() #get image by filename
def getbyname(self,filename,savepath):
"""get img from mysql by NameImg
"""
if len(filename) < 1:
raise TypeError("filename must not be None")
if len(savepath) < 1:
raise TypeError("dir must be an string of directory") self.__cnx=mysql.connector.connect(**self.__config)
cur=self.__cnx.cursor() try:
selectString="SELECT DataImg FROM pyramid WHERE NameImg = %s"
cur.execute(selectString,(filename,)) data=cur.fetchone()[0]
imgout=open(savepath,'wb')
imgout.write(data)
finally:
self.__cnx.close()
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. 【Beta】Daily Scrum 第二天

    [目录] 1.任务安排 2.Burndown Chart 3.代码check-in 4.困难及总结 1.任务安排 学号尾数 昨天做的任务 今天做的任务 明天要做的任务 612 添加计时界面返回按键事件 ...

  2. spring--aop总结

    AOP(Aspect Oriented Programming的缩写)所用的思想其实和设计模式是一样的,即在不修改原代码的情况下统一增加或者修改功能.还有,AOP大多用在spring里面. AOP是面 ...

  3. 深入JVM-垃圾回收概念与算法

    一.认识垃圾回收 谈到垃圾回收(Garbage Collection,简称GC),GC中的垃圾,特指存在于内存中的.不会再被使用的对象.对于内存空间的管理来说,识别和清理垃圾对象是至关重要的. 二.常 ...

  4. WinForm------TreeListLookUpEdit控件的使用

    1.数据库添加表dbo.Graduation 2.从工具栏拖出TreeListLookUpEdit控件,修改部分属性 Display Name:选中后显示在控件的值 Value Member:C#代码 ...

  5. 视频直播APP开发分析

    视频直播APP开发到目前为止都还是热门的一个行业,而且发展到现在直播的种类非常多,很多行业都打入了直播行业,再也不是单纯的人物直播这么单一了.视频直播APP开发行业就像是吃螃蟹,来的早的人不懂如何吃, ...

  6. /MD, /MT, /LD (Use Run-Time Library)

    https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx

  7. JavaScript中一些怪异用法的理解

    引言 JavaScript这门语言有些场合的用法还是比较怪异的.这篇文章会尽量将这门语言特有的一些比较特殊的用法收集在一起.就当是平时开发时需要注意的地方吧. 特殊用法收集 1.!!用法 在JavaS ...

  8. Java中的char到底是多少个字节?

    貌似一个简单的问题(也许还真是简单的)但是却把曾经自认为弄清楚的我弄得莫名其妙 char在Java中应该是16个字节byte在Java中应该是8个字节char x = '编'; //这样是合法的,输出 ...

  9. [Asp.Net]获取客户端ip和mac地址

    摘要 有时候,我们需要获取客户端的一些信息,以便进行统计.比如:客户端的唯一标识,ip等信息 IP 通过获取HTTP_X_FORWARDED_FOR,或者REMOTE_ADDR可以获取客户端的ip. ...

  10. ZooKeepr日志清理【转】

    转自 :@ni掌柜nileader@gmail.com 地址 数据文件管理 默认情况下,ZK的数据文件和事务日志是保存在同一个目录中,建议是将事务日志存储到单独的磁盘上. 1 数据目录 ZK的数据目录 ...