阅 读 文 章

关于不同数据库之间图像数据移植的心得和疑问

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(秋池飞叶) | 时间:2007-05-27 | 浏览:人次 ]


最近由于工作需要,研究了下不同数据库之间的数据移植,尤其是图像数据的移植。
 
有些收获,也有些疑问,写下来还请大家指点。

文本信息的移植我就不多说了,主要说下图像数据的移植。

首先谈谈将mysql里的image数据移植到sybase下:

先看mysql.

当你用python获取一个image字段值的时候:

import MySQLdb

db = MySQLdb.connect('localhost','root','','testdb')
c = db.cursor()

c.execute("select imagerow from imagetable where imageid='xx'")
getimage = c.fetchone()

这个时候 getimage是个元组,但是如果取它的值的话:

getimage = getimage[0],然后你执行 type(getimage),python会告诉你这是一个array. ( 'array.array')
它的值类似于:

array('c', '\x02\xc2\x12\x00\x00\x01\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xff\xff\xb4\xe7L:nKP@!\xc9m\'\xa1\xce\xbd;m\t\x8
\n\x85B\xe1\x16\xecw\x0b\xf8\xd3\xd8O\xdc-\xe5\x0f\\xff\'\xb9o\xf6\x98}\xdc\xad\xfe\x99\x90sy\x9d\xc7\
5Ec\x9e\xf1\xe0\x1e\x93\xae(z\xc7p9\\\xd0\xecmh\xdb ..... )

关于array模块,大家可以查看python自带的手册,有详细说明。

现在,我们来看获取sybase数据库的image字段:

import Sybase 

db = Sybase.connect("database_server_name","user","pswd","testdb")
c = db.cursor()

c.execute("select imagerow from imagetable where imageid='xx'")
getimage = c.fetchone()

同样的,我们用type(getimage[0]),python告诉你这是一个'str'。
它的值类似于:
'bdm\xae]_\xf7y\x15\x98o<^m\xb9\xa1\xaa\x04"\x14\xa7\x1\x89\xe3H\xd8\x01\xe9\x813\xe4\xaf\xc3\xc0\x82\xc0\
x83d\x81\xb0\x91\xf7\x80|\xe9BG43\x9f\x82\xf2\xad\r\xeb\x  .... '

问题出来了:从mysql里弄出来的图像数据肯定要转换一下,否则即使你直接插到sybase里了,前台程序在读取这个图像的时候也会报错。

回到上面,从mysql里获取的图像给了getimage之后它是一个array,换个说法就是:getimage有array模块的属性。
array模块有个 'tostring()'方法,可以将array转换成一个字符串(机器码),那么,这就好办了,我们执行:

ss = getimage.tostring().这个时候,我们得到一个字符串,类似于从sybase里获取的图像文件的一个字符串。

如果这个时候把这个字符串直接插到数据库里是不可能的,仔细观察就会发现,这个字符串(可能用字符串不太合适)包含大量的 
有特殊含义的字符,直接插SQL 肯定报错。

这个时候又要用到array模块了。这也是我不理解的地方,还请前辈指教。

刚才我们得到的 ss 是array转换后的字符串,现在执行:

import array

ss = array.array('B',ss)

('B'代表int型。) 

现在的ss是个列表,呵呵,python就这么神奇。它的值类似:

[40, 20, 10, 133, 66, 161, 80, 40, 20, 10, 133, 6 161, 80, 40, 20
,10, 133, 66, 161, 80, 40, 20,, 133, 191, 138, 250, 55, 85, 223, 
15, 249, 95,91, 244, 31, 128, 50, 225, 2, 212, 127, 32, 226 ...]
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 移植 心得 疑问 数据 图像 不同 数据库 之间 关于 x00

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.