[CPyUG:77745] 应用python在postgresql数据库中插入图片

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

[CPyUG:77745] 应用python在postgresql数据库中插入图片

程晓明
最近正在做一个数据库,用python做前台,postgresql做后台数据库,利用pgdb进
行前后台之间的联系。可是在将图片存入数据库时遇到问题,解决不了。
我的方法是用python的PIL模块读取图片,利用Image.tostring()创建字符流,再
将字符流存入数据库中。当需要时在把字符流从数据库中读取,利用
Image.fromstring()还原图像。
可是在字符流存入数据库时无法成功,一开始以为是字符串中单引号引起的问题,
我就把单引号都替换为2个单引号,但还是不成功,pgdb提示发生内部错误
(internal error),请高手赐教

--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77747] Re: 应用python在postgresql数据库中插入图片

est-2
Image.tostring().encode('base64')

On Jan 28, 7:29 am, chcocoysfe <[hidden email]> wrote:
> 最近正在做一个数据库,用python做前台,postgresql做后台数据库,利用pgdb进
> 行前后台之间的联系。可是在将图片存入数据库时遇到问题,解决不了。
> 我的方法是用python的PIL模块读取图片,利用Image.tostring()创建字符流,再
> 将字符流存入数据库中。当需要时在把字符流从数据库中读取,利用
> Image.fromstring()还原图像。
> 可是在字符流存入数据库时无法成功,一开始以为是字符串中单引号引起的问题,
> 我就把单引号都替换为2个单引号,但还是不成功,pgdb提示发生内部错误
> (internal error),请高手赐教
--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77748] Re: 应用python在postgresql数据库中插入图片

刘其帅
In reply to this post by 程晓明
图片还是存成文件吧,数据库里存文件名。


2009/1/28 chcocoysfe <[hidden email]>
最近正在做一个数据库,用python做前台,postgresql做后台数据库,利用pgdb进
行前后台之间的联系。可是在将图片存入数据库时遇到问题,解决不了。
我的方法是用python的PIL模块读取图片,利用Image.tostring()创建字符流,再
将字符流存入数据库中。当需要时在把字符流从数据库中读取,利用
Image.fromstring()还原图像。
可是在字符流存入数据库时无法成功,一开始以为是字符串中单引号引起的问题,
我就把单引号都替换为2个单引号,但还是不成功,pgdb提示发生内部错误
(internal error),请高手赐教




--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77750] Re: 应用python在postgresql数据库中插入图片

Zoom.Quiet
2009/1/27 Liu Qishuai <[hidden email]>:
> 图片还是存成文件吧,数据库里存文件名。
>
是也乎,是也乎,否则读取,解码都要消耗不必要的CPU资源,而且无法catch 哪

>
> 2009/1/28 chcocoysfe <[hidden email]>
>>
>> 最近正在做一个数据库,用python做前台,postgresql做后台数据库,利用pgdb进
>> 行前后台之间的联系。可是在将图片存入数据库时遇到问题,解决不了。
>> 我的方法是用python的PIL模块读取图片,利用Image.tostring()创建字符流,再
>> 将字符流存入数据库中。当需要时在把字符流从数据库中读取,利用
>> Image.fromstring()还原图像。
>> 可是在字符流存入数据库时无法成功,一开始以为是字符串中单引号引起的问题,
>> 我就把单引号都替换为2个单引号,但还是不成功,pgdb提示发生内部错误
>> (internal error),请高手赐教
>>



--
http://zoomquiet.org
'''过程改进乃是催生可促生靠谱的人的组织!'''
一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!

--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77755] Re: 应用python在postgresql数据库中插入图片

est-2
cache? heihei...

On Jan 27, 6:08 pm, "Zoom.Quiet" <[hidden email]> wrote:

> 2009/1/27 Liu Qishuai <[hidden email]>:> 图片还是存成文件吧,数据库里存文件名。
>
> 是也乎,是也乎,否则读取,解码都要消耗不必要的CPU资源,而且无法catch 哪
>
>
>
> > 2009/1/28 chcocoysfe <[hidden email]>
>
> >> 最近正在做一个数据库,用python做前台,postgresql做后台数据库,利用pgdb进
> >> 行前后台之间的联系。可是在将图片存入数据库时遇到问题,解决不了。
> >> 我的方法是用python的PIL模块读取图片,利用Image.tostring()创建字符流,再
> >> 将字符流存入数据库中。当需要时在把字符流从数据库中读取,利用
> >> Image.fromstring()还原图像。
> >> 可是在字符流存入数据库时无法成功,一开始以为是字符串中单引号引起的问题,
> >> 我就把单引号都替换为2个单引号,但还是不成功,pgdb提示发生内部错误
> >> (internal error),请高手赐教
>
> --http://zoomquiet.org
> '''过程改进乃是催生可促生靠谱的人的组织!'''
> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77756] Re: 应用python在postgresql数据库中插入图片

Jam si
建议图片还是存成文件,只将文件名存入数据库即可。

2009/1/27 est <[hidden email]>
cache? heihei...

On Jan 27, 6:08 pm, "Zoom.Quiet" <[hidden email]> wrote:
> 2009/1/27 Liu Qishuai <[hidden email]>:> 图片还是存成文件吧,数据库里存文件名。
>
> 是也乎,是也乎,否则读取,解码都要消耗不必要的CPU资源,而且无法catch 哪
>
>
>
> > 2009/1/28 chcocoysfe <[hidden email]>
>
> >> 最近正在做一个数据库,用python做前台,postgresql做后台数据库,利用pgdb进
> >> 行前后台之间的联系。可是在将图片存入数据库时遇到问题,解决不了。
> >> 我的方法是用python的PIL模块读取图片,利用Image.tostring()创建字符流,再
> >> 将字符流存入数据库中。当需要时在把字符流从数据库中读取,利用
> >> Image.fromstring()还原图像。
> >> 可是在字符流存入数据库时无法成功,一开始以为是字符串中单引号引起的问题,
> >> 我就把单引号都替换为2个单引号,但还是不成功,pgdb提示发生内部错误
> >> (internal error),请高手赐教
>
> --http://zoomquiet.org
> '''过程改进乃是催生可促生靠谱的人的组织!'''
> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!



--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77758] Re: 应用python在postgresql数据库中插入图片

Shell Xu
In reply to this post by est-2
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

est 写道:
> cache? heihei...
>
> On Jan 27, 6:08 pm, "Zoom.Quiet" <[hidden email]> wrote:
>> 2009/1/27 Liu Qishuai <[hidden email]>:> 图片还是存成文件吧,数据
库里存文件名。

>>
>> 是也乎,是也乎,否则读取,解码都要消耗不必要的CPU资源,而且无法catch 哪
>>
>>
>>
>>> 2009/1/28 chcocoysfe <[hidden email]>
>>>> 最近正在做一个数据库,用python做前台,postgresql做后台数据库,利用pgdb进
>>>> 行前后台之间的联系。可是在将图片存入数据库时遇到问题,解决不了。
>>>> 我的方法是用python的PIL模块读取图片,利用Image.tostring()创建字符流,再
>>>> 将字符流存入数据库中。当需要时在把字符流从数据库中读取,利用
>>>> Image.fromstring()还原图像。
>>>> 可是在字符流存入数据库时无法成功,一开始以为是字符串中单引号引起的问题,
>>>> 我就把单引号都替换为2个单引号,但还是不成功,pgdb提示发生内部错误
>>>> (internal error),请高手赐教
>> --http://zoomquiet.org
>> '''过程改进乃是催生可促生靠谱的人的组织!'''
>> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关
心别人的完善,自己便不可能完善!
> >
建议把文件重命名成ID,然后文件名入数据库。这样可以防止意想不到的恶意构
造文件名上传文件的漏洞。
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkl/Gh0ACgkQxx/N+qwtsRa/fQCeNzEKDTLD6MgMRJ/7kvTYn47c
4qAAoLLHmYw/USVh0M8Aji1DKJ1tNb78
=7hUd
-----END PGP SIGNATURE-----


--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77811] Re: 应用python在postgresql数据库中插入图片

程晓明
In reply to this post by 刘其帅
Liu Qishuai wrote:
> 图片还是存成文件吧,数据库里存文件名。
>
我也想过,而且这样也方便。只是觉得这样数据库有点松散,不太好管理。
后来我用postgresql的内部大对象进行存储,期间利用到了postgresql的系统函数
lo_import(),loexport()。导入图片顺利成功了,挺快。可导出图片却怎么也不
行,提示:“错误: 无法创建服务器文件 "c:\6.png": Permission denied SQL 状
态: 42501”,这应该说我的数据库用户没有读写电脑磁盘的权限。应为我的数据库
创建者是数据库的超级用户,后来我又把这个用户添加到电脑的Admin组组中去,
结果导出还是不行,真是抓狂啊。

--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77812] Re: 应用python在postgresql数据库中插入图片

Shell Xu
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

chcocoysfe 写道:
> Liu Qishuai wrote:
>> 图片还是存成文件吧,数据库里存文件名。
>>
> 我也想过,而且这样也方便。只是觉得这样数据库有点松散,不太好管理。
> 后来我用postgresql的内部大对象进行存储,期间利用到了postgresql的系统函数
> lo_import(),loexport()。导入图片顺利成功了,挺快。可导出图片却怎么也不
> 行,提示:“错误: 无法创建服务器文件 "c:\6.png": Permission denied SQL 状
> 态: 42501”,这应该说我的数据库用户没有读写电脑磁盘的权限。应为我的数据库
> 创建者是数据库的超级用户,后来我又把这个用户添加到电脑的Admin组组中去,
> 结果导出还是不行,真是抓狂啊。
>
> >

    我们的一个项目专门讨论过图片存数据库的优劣。优势是图片和数据库整在
一起,操作方便,管理方便。缺陷是数据库膨胀的很快,造成搜索性能下降,最
高可以存储的数据量也有所下降。而且每次获得图片都要读取数据库,导致系统
负荷无法分布均衡。因为最后一个原因,所以我们放弃了这个方案。
    我们部署服务器的时候,一般可以部署多个业务服务器,但尽量少去部署多
个数据库服务器。因为从逻辑上分离多个数据库非常费劲,而数据库本身的解决
方案(主要是集群,同步-镜像方案性能顶不上)多数是要大钱的。因此我们希
望N个业务服务器一个数据库支持。而如果图片存数据库,每次操作(尤其是浏
览)都需要操作数据库,负荷非常大。如果存文件,无非就是盘阵上专门划个区
域出来搞存储。甚至可以单开一个盘阵,完全不用消耗数据库。
    至于导出图片的问题,你可以看看你的postgresql的临时目录是什么位置,
进程属于哪个用户。请保证该用户对该路径有写权限。通常而言,将临时路径设
定在c:\是非常危险的。
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkmDo+wACgkQxx/N+qwtsRZGlgCgqajvyP9oE9OIFflooEQgTJI7
IJwAoLkRg2MQZQ9rI8NcxQUf9GDetDuC
=gtdK
-----END PGP SIGNATURE-----


--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---

Reply | Threaded
Open this post in threaded view
|

[CPyUG:77814] Re: 应用python在postgresql数据库中插入图片

程晓明
In reply to this post by est-2
est wrote:
Image.tostring().encode('base64')
这样编码后成功存进数据库里了,我后来读取时用了:
stream = cStringIO.StringIO(photo.decode('base64'))(photo为读取图片byte数据的存储变量)
但是python提示如下:
  File "SplitWin.py", line 235, in OnLeftDown
    stream = cStringIO.StringIO(photo.decode('base64'))
  File "C:\Python25\lib\encodings\base64_codec.py", line 42, in base64_decode
    output = base64.decodestring(input)
  File "C:\Python25\lib\base64.py", line 321, in decodestring
    return binascii.a2b_base64(s)
  binascii.Error: Incorrect padding
这是为什么呢

--~--~---------~--~----~------------~-------~--~----~
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:[hidden email]
退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
-~----------~----~----~----~------~----~------~--~---