使用python连接oracle

背景

已经有一个container运行起来了,直接在这个container里安装包,使得能够通过python读取oracle服务器。

步骤

1. 下载oracle-client:

Instant Client for Linux x86-64 (64-bit)

使用python连接oracle_第1张图片

我下载的是19.5,不知为何网站上找不到19.5,只有19.10,但是应该是一样的。

2. 解压缩到服务器上。

由于我的容器已经做了目录映射,所以在容器内部也是可以看到这个文件的。

使用python连接oracle_第2张图片

3. 在容器里安装cx_Oracle.whl

4. 在容器里安装libaio1

5. 定义环境变量

在/etc/profile中添加如下环境变量:

使用python连接oracle_第3张图片

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中。例如:

使用python连接oracle_第4张图片

2. 插入中文乱码

查看服务器端编码:

select userenv('language') from dual;

使用python连接oracle_第5张图片

然后在环境变量加入NLS_LANG,在程序中设置:

os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.ZHS16GBK' 

3. oracle表结构是varchar的,不接受int格式,需要转成string再传入。

4. 不接受numpy.int64,需要转成pandas的int:xxx = int(xxx)

5. oracle的表头(字段名称)不能含有数字,否则会报错。

6. 要插入oracle的dataframe的字段名称可以是英文,但是必须得大写,否则建表后自动转成大写,但是dataframe还是小写的,会对不上。

你可能感兴趣的:(环境&安装,python,oracle,python,服务器)