知乎也是我写的:Docker环境解决python连接Oracle数据库'utf-8' can't decode bytes xxxx in position问题 - 知乎
网上关于用python连接Oracle数据库报错的相关回答较少,我用百度和谷歌都搜索过相关问题,但是一般搜索不到相关的问题,或者提供的解决办法都不能解决我的问题。因而打算写一篇文章来给我最近遇到的相关问题一个记录。
我的场景是这样的:需要在一台与外界环境隔绝的机器上部署Docker,然后连接内网的Oracle数据库并写入postgressql中,因为没办法访问外网,不好在机器上安装各种各样的工具,因而采用了Docker的方式将python的环境在外部打好镜像传到内网里,把脚本部署到Docker上来执行。
python用到的数据库相关包如下:
- psycopg2==2.8.4
- psycopg2-binary==2.8.4
- cx-Oracle==8.3.0
- SQLAlchemy
- pandas
我遇到的问题是用python的cx_Oracle读取Oracle的表的时候,由于Oracle使用的中文编码,我利用以下语句创建连接并访问数据时报错,
import pandas as pd
import cx_Oracle
os.environ['NLS_LANG'