背景
已经有一个container运行起来了,直接在这个container里安装包,使得能够通过python读取oracle服务器。
步骤
1. 下载oracle-client:
Instant Client for Linux x86-64 (64-bit)
我下载的是19.5,不知为何网站上找不到19.5,只有19.10,但是应该是一样的。
2. 解压缩到服务器上。
由于我的容器已经做了目录映射,所以在容器内部也是可以看到这个文件的。
3. 在容器里安装cx_Oracle.whl
4. 在容器里安装libaio1
5. 定义环境变量
在/etc/profile中添加如下环境变量:
6. 测试:
import cx_Oracle
try:
cx_Oracle.init_oracle_client(lib_dir=r"/usr/src/app/instantclient_19_5")
except Exception as err:
print("Whoops!")
print(err)
注意点
1. 插入时间格式变量
需要把时间变量的格式变为datetime的格式才能插入到oracle中。例如:
2. 插入中文乱码
查看服务器端编码:
select userenv('language') from dual;
然后在环境变量加入NLS_LANG,在程序中设置:
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.ZHS16GBK'