python3.7 操作Oracle cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library
环境:
win10 64位
python 3.7.5 (命令行:python --version)
conda 4.8.2 (命令行:conda --version
oracle-cilent 11_2 (plsql已经安装成功 说明ORACLE_HOME等环境变量已经配好)
-
1 conda install cx_Oracle
自行解决依赖等问题 -
2 校验安装是否成功
import cx_Oracle #是否报错 或者无法导入
# 获取数据库连接
username = "hello"
userpwd = "hello"
host = "192.0.0.1"
port = 1521 # 数字
dbname = "orcl"
dsnStr = cx_Oracle.makedsn(host, port, service_name=dbname)
connection = cx_Oracle.connect(username, userpwd, dsn=dsnStr)
print(connection)
sql = "select * from tablename"
data = pd.read_sql(sql, connection) # 直接将读取的sql数据转换成数据框,有助于下一步的可视化和统计建模
print(data.head(3))
- 3 出现问题1:
line 13, 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
- 4 解决方法:
第一步:将oracle中的3个文件进行copy(oracle 客户端文件中)
D:\Program Files\PLSQL\instantclient_11_2\
第二步:将3个文件copy到
D:\develop\python\Anaconda3\Lib\site-packages
- 5 出现问题 2:
完全退出pycharm后重新打开,执行x.py文件 出现以下问题:
ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
-
6 问题二解决方案:
解决方法1:按照上文中的python代码(oracle中的实例名等默认情况会出现问题)
解决方法2:参考下边的文章 讲的很详细参考文章:
-
https://blog.csdn.net/AlanGuoo/article/details/88255194