如何通过Python 3.5从Firebird 2.5获取pdf / jpg文件?

时间:2016-11-18 14:14:37

标签: python blob firebird fdb

我使用Python 3.5执行此任务+库fdb。我的剧本:

import fdb
con = fdb.connect(
    host='host', database='database',
    user='IAKUZNETSOV', password='111111'
  )
cur = con.cursor()
cur.execute("select DATA from ATTACHMENTS where OID = '6512165313'")
fileToSave= cur.fetchone()[0]
with open('c:\\python5.jpg', 'wb') as f:
    f.write(fileToSave)

尝试保存文件后,我收到错误:

  

UnicodeDecodeError:'charmap'编解码器无法解码字节0x98   578:字符映射到< undefined>

数据库中的编码字段:Win-1251类型:Blob。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

发生此错误的原因是blob字段的子类型1(文本)。

subtypes是:

  

0 - 二进制数据(图像,视频,音频,等等)

     

1 - 文本(基本字符函数工作)

     

2 - BLR(用于Firebird程序,触发器等的定义)

     

用户应用程序应仅使用子类型0和1。

如果无法将子类型更改为0,则可以尝试将数据转换为原始字节到客户端应用程序中。