linux上 python使用cx_Oracle 连接 oracle 9i

上次用python写过一段代码, 需要读取数据库,然后数据库是很久之前的,还是9i的版本,所以连接的时候就报错。

因为写这篇文章离我写这段代码已经过去了一段时间,而且当时操作的linux也不在旁边。所以有些东西就描述的不是很详细,也不能贴图了。 

像上面的这个报错就是说  版本不支持。 但是具体的错误码和英文错误信息就忘记了。 只记得大概就是这么个意思。

然后查了下数据库版本发现是9i的oracle, 之前连的都是12的。 


先简单说一下python连接数据库的步骤

去网上可以搜到很多的文章是关于python 怎么使用cx_Oracle 连接oracle数据库的。 


大概的步骤就是这几步,我就不详细写了。

1. 去oracle官网下一个客户端。安装之后配置环境变量

2. 用pip安装一个python端的库,cx_Oracle

3. 写一个测试脚本,连接一下数据库。


然后这个时候以为是python的包有问题, 想着找一个新的连接工具,但是一直没找到。 安装老版本的cx_Oracle包也不行。 

后来翻看cx_Oracle的官方文档发现, cx_Oracle6.1 也是支持Oracle9i 的。 后来忘记在哪个英文的文档上又看到这句话后面加了一个括号, 支持哪个版本的数据库是依赖于安装的client版本。 后面我在网上搜了好久,一直没有找到过这个英文网站了。 

所以知道了问题所在,就可以对应解决了。 直接去oracle官网上去下载客户端,下了一个最老的rpm包(10版本),发现不行,是因为python的cx_Oracle库不支持那么老的客户端。最低支持11.2, 于是再安装了一个11.2版本的oracle客户端。 再配置一下环境变量就可以了。 python的cx_Oracle库可以下载使用最新的版本。 


最后需要注意的是数据库的字符编码, 我连的9i数据库的中文编码不是 utf-8 , 所以需要在配置环境变量的时候配置一个  NLS_LANG的变量, 然后再到代码里边获取的中文进行解码再编码。 才能正确显示。 


网上一直没有文章直接说明这个问题, 希望碰到这个问题的人可以直接搜  python oracle 9i 就可以搜到我这个文章解决问题。


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值