python查询oracle数据blob类型字段踩坑记

本文分享了使用Python和cx_Oracle库从Oracle数据库中读取BLOB类型字段的代码实例,包括解决不同环境下可能遇到的问题,如环境配置、编码问题和空值处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python查询oracle数据blob类型字段

在网上找了代码,内容很简单,直接上代码

import os
import cx_Oracle
# os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

db_orcl = cx_Oracle.connect("用户/sid@ip/orcl")
cr_orcl = db_orcl.cursor()
cr_orcl.execute("select * from user ")
rs_user = cr_orcl.fetchall()
for user in rs_user:
    userId = user[0]
    print(userId)
    if user[1] == '':
        continue
    blob = user[1].read()
    f = open("D:\\allImages\\"+userId+".jpg", "wb")
    f.write(blob)
    f.close()db_orcl.commit()
cr_orcl.close()

代码本身没有毛病,但是不同的环境会有不同的问题

1、首先需要初始化cx_Oracle,这里就不不能直接pip install cx_Oracle,很多传统企业oracle版本都不一样,并且使用的客户端版本也不一样,比如我碰到的环境,数据库oracle10g 运行操作系统是64位,但是不知道那头装的是oracle client是32位(既有环境不敢碰),这时候你就不得不把对应的环境换成python 32位的,cx_Oracle的模块呢也要单独下载cx_Oracle-5.1.2-10g.win32-py2.7.msi,我用的是这个,可以自行百度,也可以直接这里下载https://download.youkuaiyun.com/download/zhang1034490826/11274525

2、# os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 这个干脆注掉,否则跟数据库不一致会出现乱码

3、blob = user[1].read() 读取blob字段这里,需要加一个判断,否则如果blob字段为空的化,这里是user[1]的type是nonetype

4、输出,如果想直接print内容的话,一定搞清楚存储的编码及内容类型

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值