前提条件
安装步骤
安装cx_Oracle
cx_Oracle的下载需要对应自己的python版本
如何查看python版本
import sys
print(sys.version)
我的是py3.6 故下载 ——>cx_Oracle-8.2.1-cp36-cp36m-manylinux1_x86_64
传到服务器上后,打开anaconda的目录
即XXXX/anaconda3/bin 下
./pip install XXX/XXX/cx_Oracle-8.2.1-cp36-cp36m-manylinux1_x86_64.whl
显示安装successfully 即可。
安装oracle install client
这一步是关键,毕竟网上这一步的教程非常多,所以查阅起来有些摸不着头脑
并且安装错误的话报的错误基本一致
报错信息
Traceback (most recent call last): File “python/init.py”, line 282, in getAndExecuteInput
File “”, line 1, in cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help
这里参考stackoverflow 1 | stackoverflow 2
我选择的是 Instantclient-basic-linux.x64-21.3.0.0.0.zip
放入服务器内,解压后 文件夹 改名为instantclient
最后,我添加了外部变量的路径 LD_LIBRARY_PATH
$ vim ~/.bashrc
并将这一行添加到.bashrc文件中
export LD_LIBRARY_PATH=/usr/local/instantclient:$LD_LIBRARY_PATH
export PATH=/usr/local/instantclient:$PATH
保存.bashrc文件后,我找到了它:
$ source ~/.bashrc
这些步骤全部操作完后:
一定要重启jupyter!重启jupyter!重启jupyter!
并且重启后
import os
print(os.environ["PATH"])
如果打印包含 instantclient 的路径即可。
连接oracle
import cx_Oracle
import pandas as pd
#获取数据库连接
username="****"
userpwd="****"
host="****"
port=1521
dbname="****"
dsn=cx_Oracle.makedsn(host, port, dbname)
connection=cx_Oracle.connect(username, userpwd, dsn)
sql="select * from **** where rownum<5"
data = pd.read_sql(sql,connection) ##直接将读取的sql数据转换成数据框,有助于下一步的可视化和统计建模
data.head(n=2)
代码参考Linux上Python连接Oracle解决报错cx_Oracle.DatabaseError: DPI-1047